From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2052.outbound.protection.outlook.com [40.107.21.52]) by sourceware.org (Postfix) with ESMTPS id A4B313916FE0 for ; Fri, 7 Jul 2023 12:28:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A4B313916FE0 Authentication-Results: sourceware.org; dmarc=fail (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=none smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ie9xbqT4Y9LRdzrjQVj2GFoBfJ3szCxJ0EtiyyRDC3DPHFsCSOFZYOtRWC95S+BUE1qIDmtdHm1OZaom2iTvDEXN2ELmphON2bbXhIcThgSy0d0v5Ws8Z2gjdMwACuspBLVjZQAF1Gi+GyiBYSt5SQnYekglMvsSYgpyrTbxde/fUgAtEX5sOtiJXM60GwvzStm7s26I5TQZWjKxLdiyOG44fxKGRa/preIGRAe05lbw/PqWH3ynmZWatiw61ffwcZVz7FTL9mQ9vr/yj6KbRDwlGiLt7Wa9aROSXkjx+vj8hXkevCIT6YSdYIKBgQ6qm9/nu5Ve0enCTiSF42QLUA== 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=uWfq3DL3zwaNRnG+dbHk8Q8jiUXT6kB/lH56IZAjLzg=; b=d2T/2+CMvyO3z188+0aqAc2kMoeVOwdrSDmEo6nX2aFode2I5cIQVzKGntkTXl0N1XXrNXlT/sqSYBW9XmUiUj8aH0RGYjkMPGSDoc2vXB5hOREK8pMnBSvSClS8pHpF23NVkAVDcbM3wJGh3Kb8/MB2JeZi6Bvt7N9EdscYuL5fKTLMoSoTA/+0KuYhXvX127D0RfQA31JUAPrLbTtpuqJfUn32LV8acWcNv5jsjEBNPhPq5vFsocCFFtVxtB+aqhIGeKegGaS3SsboiXIAoFdOk6gJPOHXf46PigYq2pCsUJbOu4lgZqceRM3MlMfvPuqGbVmD02iZraJHv7O3UA== 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=uWfq3DL3zwaNRnG+dbHk8Q8jiUXT6kB/lH56IZAjLzg=; b=DAcacXZYACH1Monnzd8t6nvXt+bqiosUKQohOBiizIwKKv/Jtj6K8x1H/1fiojrAJljE50CAlD/88qLCBZohmu2+09QgVnGTPTui0PcQi6u0b0f0FZmEOFjQl5HmF5B/mAq8sj11o7/vyrCcYnAp89jNQbcLgqG8vYyV1R6xv0zcYgWy0VJQFTlmO8dgqbaVmR0cR7SqOJl1GyXndJgHCEXitTrUzgPM51bZZQ9eBPE6qJvvh/srhxud1MiRe6ufrcH8gO9pp1n3uAPfpAgjrgC4bWNBEK/oj+vI6f19nt/fo+MTBM4FnwSR+l5BD+ISzeP14WPgZt9eBWnsQLlDbw== 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 PAXPR04MB8144.eurprd04.prod.outlook.com (2603:10a6:102:1cc::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.17; Fri, 7 Jul 2023 12:28:44 +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; Fri, 7 Jul 2023 12:28:44 +0000 Message-ID: <0086e23c-bfdd-14b7-d53f-8d2bcc65bbc2@suse.com> Date: Fri, 7 Jul 2023 14:28:41 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH 08/10] x86: misc further register-only insns don't need to go through mod_table[] Content-Language: en-US From: Jan Beulich To: Binutils Cc: "H.J. Lu" References: <54b1c54f-ddad-4d5a-f5d0-e585cd3aaa3e@suse.com> In-Reply-To: <54b1c54f-ddad-4d5a-f5d0-e585cd3aaa3e@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0176.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b4::15) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|PAXPR04MB8144:EE_ X-MS-Office365-Filtering-Correlation-Id: bcb56e71-a402-47f3-9c62-08db7ee5b437 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Kjki0f9ubM1sQdnq1sxiW9AI/fHIZdBH0QbSs8wKTTv1MdicuQ5/Ca2zgNid86RCdGR3Eo1hWAgV7J58yNu5DFnN/gT3REfrDxIaqRCnDQQeaVGYLFid7UQnJCUXGMc9q3i1dAaALZY+TlLmQzZBgkfnOnxhGq9r3fw2JI/6OgbTUKCNWb6IvJHKUFjD230KuNilboDlJqV0zVpQALSdETtnYAq5L7itbbWv1wMlEk19JjX6V0MaIhFBVxcJZAw2IrZrv42cfZD5l9qCiiC1INDeo9zMU9zpoFmtY0b2haYkdnNJTVcx+5K0boilr/g0w0Y+EFwzu6wTBT77KAgaVVfDVN/IQZsp+WeaNJDL53AE4EmL0+0YxA7SwgxKyvWnFKUGX5Y3lDuxSnkpOgWvhQhpwAbsD6D0AYQa5td5GxfMlhjqqWDvR1U6CPKkGHUvaCVOt9XXGomN/TRDzWyzC68RZysSOTklh+ofFThmNLkUzNweXaS/mcFj3jlCKGpkCCGWBVit1EKR3I+MUBSQTBCeVl+u0KEgGIghQFMZ36/TqbD5TKIxn0lJnN5qBbO4wFXqdP1Np4CzYn/p94ud8JX8O2u0TJFEO1j43KctumsyH079YjW2avDhh71DIC8MVIArB+qB8cWDTGyAhosbTA== 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)(346002)(376002)(366004)(39860400002)(136003)(396003)(451199021)(30864003)(41300700001)(2906002)(5660300002)(8676002)(8936002)(36756003)(31696002)(86362001)(31686004)(2616005)(6666004)(186003)(26005)(66476007)(53546011)(6506007)(6512007)(478600001)(6486002)(6916009)(4326008)(66556008)(66946007)(316002)(38100700002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Ritla3o1ZnpvV1hybEhscEJ0cUJpeTBsV3E1ZE5iZEdnWnBYZ3NCRXV6dU5P?= =?utf-8?B?ekFIWVFMNTdtK0Z1RVg4NWRHem90VmdpYkdKWEFHaFh5cG5oeWpIZzFGWmJT?= =?utf-8?B?MHV5RUsvNkY0cVVQMkREbFdzWmFmTjBmN1Zrc29Odi9JMUZKYzBZL2JSc1lB?= =?utf-8?B?QWRBUTZJczF2Z0lMUlB5N2Rycm5JSFF3TmtMUzJOdk9TOHdyV3ZYelRJTUts?= =?utf-8?B?QUc1Q2ZOR2JTMEQwa3ZzTjRibXNLMmVYV25ZTXlhdWpiRG1pY0gza2FUcnh6?= =?utf-8?B?ajNUTHB0VGlyLzdwUDB5bUdwSGl4UVNZemxUdThVWDlzOGc2UWdZbGFNUVdD?= =?utf-8?B?ZGxndUNXai9EZHAyZGNveHByQUJyUzdmZ2J2aVdzcTJ5VkJRYzNlWTVKdjlH?= =?utf-8?B?c3JLYTZ5czR4L0dXaS9HWlpFVzg4M2hXbWo1YUNEaEFDWjVFd2pSSm5hTGE5?= =?utf-8?B?bzdmT1JjWHFoekhaOEJweEVndllIL0tZai85Q1VFdE5VbkNXTDRXYnNJa2FQ?= =?utf-8?B?L3RpcWlaam5hZnUrSnlRTUViTGdkREpMaDZSR3ZKY1o3TzJUNmNqL2ZxeWdQ?= =?utf-8?B?Z2FnVUVVMHBQZXVCZ0dKeDE0UHY1WVQ1QkkrTWY1N1RVRERIQWYwMFEzakwv?= =?utf-8?B?aHJXam44ZHZYWllNaHppTHBWRVR6L2t5Q1YyVnhxVnk2YXJqdFJKWnhKQVdz?= =?utf-8?B?M2RSWnIvQndBN0l0U01wZW4yUnpIcGREUXFVU3RiSEpMbXV2NlRIYTk2bklR?= =?utf-8?B?ZmY5WXhjK2tKWDNFY3JWRDVKbnhESUgrdVRiTFFNS1BCSGp5MmgwcC9DVFpv?= =?utf-8?B?cHFiY21VNGkyN3Q0TjlxZGNpOEtUSWtnbVRpKzBJNTFzTWNmS2dIL0lmRkov?= =?utf-8?B?ZFhEekFXc3VQOWw5S1B5QzIyT0ZDNE5UM2xoNFA2bzI4Yi9CV0kzVnNkaUVl?= =?utf-8?B?VmIyVklGTWgrNnRPUVNJVi90c0tkRVd4czVQUVNiUVdEZUtRVHZubS82aXhC?= =?utf-8?B?NFpiN2JXcXhjYWg0MEdobjhSZGF5dUFzRDVqTU9QSC8xalhzUkI5cWJwK3Fu?= =?utf-8?B?Zi9rWUlYa2thS2d6VzVuRU1zYkdkLzZUVzVtVnZaanE2ME43NVR2V3dQNTA2?= =?utf-8?B?NDVXRUVYOU15ZklyNk8vSGpER21yVm1UV3NzaTE5Z2VEVjlzdENmNy91Z1V1?= =?utf-8?B?cjA5blpsenFUYVZlbmJIQ2dTWituRU9tcE5xL09nK0xWQUU5UmhWeWVmVkNR?= =?utf-8?B?Y29ZZnVnMGhIOExyaFd5d0VQTkRTRnNJdis3dnErbUZYQW5VQzl6QzhNemtC?= =?utf-8?B?Y1NRNmxUUjlHZ3BobllzK2x1RWpiMlFNU2d1ZW5BSFJmUEIzQzVXRkxraUwy?= =?utf-8?B?OHNYY2plMXlhckllQjA5V3pkYWRGa0R5Mjh1OFo3U3NQaUJseEszNDJUQlFw?= =?utf-8?B?YldqQ3RXaVdEL1g3OEx4a2Z0cWJTMlIxYk1YSko3VDdRY05xTWNxZW4vVkN3?= =?utf-8?B?S09mMDI2U08xcWZqZ3hvSnJzZ3UzKzZBd0gzZlZybVlJYVNVcnNoc3dnTjZv?= =?utf-8?B?aTRMYVRNUFFDeVdudHFnWm05R0I0WHJNcVQwU2hWQ2dPQ3k4MlR0ODZBS1RM?= =?utf-8?B?ejlpZndXbUNCd282R1VFaHdKdGdJYXZkaGhHcDVSYWczelJvekY5ZktiRHNE?= =?utf-8?B?cTdMa1pmSmp6aitKUkFvR3BUUDF1emN1RXRqa1lpOExVakJ0dEhLL016OCsv?= =?utf-8?B?QVJTUUN6cmR0YjltSkJOM2JQNFZzdFNtc1NsaTZra3lzNStrRUxya1pLVnFJ?= =?utf-8?B?bit0a0k4bStFMzJBQnU1Um00SE9sbnRFcTd0eDhNL1ZZMUZzK1JRb3p5V2Vj?= =?utf-8?B?bU5EN3VzT2dUMEUwdDFESmRjckNHc0dnSEhoMUVnQjVyV2lPUnBHd3VPbHZm?= =?utf-8?B?aWRQcVh4MGdOd2x1dDExdGhRYnM4a1VROEIwT2h3ajZRV1RtNXo4TjJ1dzJ2?= =?utf-8?B?c2R5c25LcEwrZGp6OHZkek1jNTlaRFcwaThNaEd5aGlIbE96R1p5OHhVZ2xR?= =?utf-8?B?Q0h2Rm5TeUQ5cUxLSVdtaFpCSlB6OEhWT2ROOFF0aDJ4bEtzTVJUUGN3d2dR?= =?utf-8?Q?mlxVVgvQz//c6EvOvyChG2R7R?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcb56e71-a402-47f3-9c62-08db7ee5b437 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2023 12:28:44.0290 (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: /7Fb4MMaoRDr6bYC9ff4b4HZxhni8OJyN5CNw0Kyih7LSWSZPyx6dDSmVMkxSZyFdC26/aVT4uJdQN3tGgc2Zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8144 X-Spam-Status: No, score=-3016.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNWANTED_LANGUAGE_BODY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 04.07.2023 17:22, Jan Beulich wrote: > Several already use OP_R(), which rejects the memory forms of insns, and > a few others can easily be converted to do so as well. Note that for it > to be able to use BadOp() without forward declaration, OP_Skip_MODRM() is > moved down. > > While there add the previously missing PREFIX_OPCODE to legacy opcode > 0FD7. > > --- a/opcodes/i386-dis.c > +++ b/opcodes/i386-dis.c > @@ -516,7 +516,6 @@ fetch_error (const instr_info *ins) > #define EXxS { OP_EX, x_swap_mode } > #define EXxmm { OP_EX, xmm_mode } > #define EXymm { OP_EX, ymm_mode } > -#define EXtmm { OP_EX, tmm_mode } > #define EXxmmq { OP_EX, xmmq_mode } > #define EXxmmqh { OP_EX, evex_half_bcst_xmmqh_mode } > #define EXEvexHalfBcstXmmq { OP_EX, evex_half_bcst_xmmq_mode } > @@ -526,10 +525,12 @@ fetch_error (const instr_info *ins) > #define EXymmq { OP_EX, ymmq_mode } > #define EXEvexXGscat { OP_EX, evex_x_gscat_mode } > #define EXEvexXNoBcst { OP_EX, evex_x_nobcst_mode } > +#define Rd { OP_R, d_mode } > #define Rdq { OP_R, dq_mode } > #define Nq { OP_R, q_mode } > #define Ux { OP_R, x_mode } > #define Uxmm { OP_R, xmm_mode } > +#define Rtmm { OP_R, tmm_mode } > #define EMCq { OP_EMC, q_mode } > #define MXC { OP_MXC, 0 } > #define OPSUF { OP_3DNowSuffix, 0 } > @@ -829,7 +830,7 @@ enum > REG_0F1C_P_0_MOD_0, > REG_0F1E_P_1_MOD_3, > REG_0F38D8_PREFIX_1, > - REG_0F3A0F_PREFIX_1_MOD_3, > + REG_0F3A0F_P_1, > REG_0F71, > REG_0F72, > REG_0F73, > @@ -847,7 +848,7 @@ enum > > REG_XOP_09_01_L_0, > REG_XOP_09_02_L_0, > - REG_XOP_09_12_M_1_L_0, > + REG_XOP_09_12_L_0, > REG_XOP_0A_12_L_0, > > REG_EVEX_0F71, > @@ -862,8 +863,6 @@ enum > MOD_62_32BIT = 0, > MOD_C4_32BIT, > MOD_C5_32BIT, > - MOD_C6_REG_7, > - MOD_C7_REG_7, > MOD_0F01_REG_0, > MOD_0F01_REG_1, > MOD_0F01_REG_2, > @@ -885,7 +884,6 @@ enum > MOD_0F1B_PREFIX_1, > MOD_0F1C_PREFIX_0, > MOD_0F1E_PREFIX_1, > - MOD_0F50, > MOD_0FAE_REG_0, > MOD_0FAE_REG_1, > MOD_0FAE_REG_2, > @@ -896,23 +894,9 @@ enum > MOD_0FAE_REG_7, > MOD_0FC7_REG_6, > MOD_0FC7_REG_7, > - MOD_0FD7, > MOD_0F38DC_PREFIX_1, > - MOD_0F38FA_PREFIX_1, > - MOD_0F38FB_PREFIX_1, > - MOD_0F3A0F_PREFIX_1, > > - MOD_VEX_0FD7, > MOD_VEX_0F3849_X86_64_L_0_W_0, > - MOD_VEX_0F385C_X86_64, > - MOD_VEX_0F385E_X86_64, > - MOD_VEX_0F386C_X86_64, > - > - MOD_XOP_09_12, > - > - MOD_EVEX_0F387A_W_0, > - MOD_EVEX_0F387B_W_0, > - MOD_EVEX_0F387C, > }; > > enum > @@ -928,7 +912,7 @@ enum > RM_0F1E_P_1_MOD_3_REG_7, > RM_0FAE_REG_6_MOD_3_P_0, > RM_0FAE_REG_7_MOD_3, > - RM_0F3A0F_P_1_MOD_3_REG_0, > + RM_0F3A0F_P_1_R_0, > > RM_VEX_0F3849_X86_64_L_0_W_0_M_1_P_0_R_0, > RM_VEX_0F3849_X86_64_L_0_W_0_M_1_P_3, > @@ -1074,9 +1058,9 @@ enum > PREFIX_VEX_0F384B_X86_64_L_0_W_0, > PREFIX_VEX_0F3850_W_0, > PREFIX_VEX_0F3851_W_0, > - PREFIX_VEX_0F385C_X86_64_M_1_L_0_W_0, > - PREFIX_VEX_0F385E_X86_64_M_1_L_0_W_0, > - PREFIX_VEX_0F386C_X86_64_M_1_L_0_W_0, > + PREFIX_VEX_0F385C_X86_64_L_0_W_0, > + PREFIX_VEX_0F385E_X86_64_L_0_W_0, > + PREFIX_VEX_0F386C_X86_64_L_0_W_0, > PREFIX_VEX_0F3872, > PREFIX_VEX_0F38B0_W_0, > PREFIX_VEX_0F38B1_W_0, > @@ -1319,9 +1303,9 @@ enum > VEX_LEN_0F3849_X86_64, > VEX_LEN_0F384B_X86_64, > VEX_LEN_0F385A, > - VEX_LEN_0F385C_X86_64_M_1, > - VEX_LEN_0F385E_X86_64_M_1, > - VEX_LEN_0F386C_X86_64_M_1, > + VEX_LEN_0F385C_X86_64, > + VEX_LEN_0F385E_X86_64, > + VEX_LEN_0F386C_X86_64, > VEX_LEN_0F38DB, > VEX_LEN_0F38F2, > VEX_LEN_0F38F3, > @@ -1381,7 +1365,7 @@ enum > VEX_LEN_0FXOP_08_EF, > VEX_LEN_0FXOP_09_01, > VEX_LEN_0FXOP_09_02, > - VEX_LEN_0FXOP_09_12_M_1, > + VEX_LEN_0FXOP_09_12, > VEX_LEN_0FXOP_09_82_W_0, > VEX_LEN_0FXOP_09_83_W_0, > VEX_LEN_0FXOP_09_90, > @@ -1479,9 +1463,9 @@ enum > VEX_W_0F3858, > VEX_W_0F3859, > VEX_W_0F385A_L_0, > - VEX_W_0F385C_X86_64_M_1_L_0, > - VEX_W_0F385E_X86_64_M_1_L_0, > - VEX_W_0F386C_X86_64_M_1_L_0, > + VEX_W_0F385C_X86_64_L_0, > + VEX_W_0F385E_X86_64_L_0, > + VEX_W_0F386C_X86_64_L_0, > VEX_W_0F3872_P_1, > VEX_W_0F3878, > VEX_W_0F3879, > @@ -2124,7 +2108,7 @@ static const struct dis386 dis386_twobyt > { "cmovleS", { Gv, Ev }, 0 }, > { "cmovgS", { Gv, Ev }, 0 }, > /* 50 */ > - { MOD_TABLE (MOD_0F50) }, > + { "movmskpX", { Gdq, Ux }, PREFIX_OPCODE }, > { PREFIX_TABLE (PREFIX_0F51) }, > { PREFIX_TABLE (PREFIX_0F52) }, > { PREFIX_TABLE (PREFIX_0F53) }, > @@ -2275,7 +2259,7 @@ static const struct dis386 dis386_twobyt > { "paddq", { MX, EM }, PREFIX_OPCODE }, > { "pmullw", { MX, EM }, PREFIX_OPCODE }, > { PREFIX_TABLE (PREFIX_0FD6) }, > - { MOD_TABLE (MOD_0FD7) }, > + { "pmovmskb", { Gdq, Nq }, PREFIX_OPCODE }, > /* d8 */ > { "psubusb", { MX, EM }, PREFIX_OPCODE }, > { "psubusw", { MX, EM }, PREFIX_OPCODE }, > @@ -2546,7 +2530,7 @@ static const struct dis386 reg_table[][8 > { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > - { MOD_TABLE (MOD_C6_REG_7) }, > + { RM_TABLE (RM_C6_REG_7) }, > }, > /* REG_C7 */ > { > @@ -2557,7 +2541,7 @@ static const struct dis386 reg_table[][8 > { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > - { MOD_TABLE (MOD_C7_REG_7) }, > + { RM_TABLE (RM_C7_REG_7) }, > }, > /* REG_D0 */ > { > @@ -2714,9 +2698,9 @@ static const struct dis386 reg_table[][8 > { "aesencwide256kl", { M }, 0 }, > { "aesdecwide256kl", { M }, 0 }, > }, > - /* REG_0F3A0F_PREFIX_1_MOD_3 */ > + /* REG_0F3A0F_P_1 */ > { > - { RM_TABLE (RM_0F3A0F_P_1_MOD_3_REG_0) }, > + { RM_TABLE (RM_0F3A0F_P_1_R_0) }, > }, > /* REG_0F71 */ > { > @@ -2867,10 +2851,10 @@ static const struct dis386 reg_table[][8 > { Bad_Opcode }, > { "blci", { VexGdq, Edq }, 0 }, > }, > - /* REG_XOP_09_12_M_1_L_0 */ > + /* REG_XOP_09_12_L_0 */ > { > - { "llwpcb", { Edq }, 0 }, > - { "slwpcb", { Edq }, 0 }, > + { "llwpcb", { Rdq }, 0 }, > + { "slwpcb", { Rdq }, 0 }, > }, > /* REG_XOP_0A_12_L_0 */ > { > @@ -3557,13 +3541,13 @@ static const struct dis386 prefix_table[ > /* PREFIX_0F38FA */ > { > { Bad_Opcode }, > - { MOD_TABLE (MOD_0F38FA_PREFIX_1) }, > + { "encodekey128", { Gd, Rd }, 0 }, > }, > > /* PREFIX_0F38FB */ > { > { Bad_Opcode }, > - { MOD_TABLE (MOD_0F38FB_PREFIX_1) }, > + { "encodekey256", { Gd, Rd }, 0 }, > }, > > /* PREFIX_0F38FC */ > @@ -3577,7 +3561,7 @@ static const struct dis386 prefix_table[ > /* PREFIX_0F3A0F */ > { > { Bad_Opcode }, > - { MOD_TABLE (MOD_0F3A0F_PREFIX_1)}, > + { REG_TABLE (REG_0F3A0F_P_1) }, > }, > > /* PREFIX_VEX_0F12 */ > @@ -3884,27 +3868,27 @@ static const struct dis386 prefix_table[ > { "%XVvpdpbusds", { XM, Vex, EXx }, 0 }, > { "vpdpbssds", { XM, Vex, EXx }, 0 }, > }, > - /* PREFIX_VEX_0F385C_X86_64_M_1_L_0_W_0 */ > + /* PREFIX_VEX_0F385C_X86_64_L_0_W_0 */ > { > { Bad_Opcode }, > - { "tdpbf16ps", { TMM, EXtmm, VexTmm }, 0 }, > + { "tdpbf16ps", { TMM, Rtmm, VexTmm }, 0 }, > { Bad_Opcode }, > - { "tdpfp16ps", { TMM, EXtmm, VexTmm }, 0 }, > + { "tdpfp16ps", { TMM, Rtmm, VexTmm }, 0 }, > }, > > - /* PREFIX_VEX_0F385E_X86_64_M_1_L_0_W_0 */ > + /* PREFIX_VEX_0F385E_X86_64_L_0_W_0 */ > { > - { "tdpbuud", {TMM, EXtmm, VexTmm }, 0 }, > - { "tdpbsud", {TMM, EXtmm, VexTmm }, 0 }, > - { "tdpbusd", {TMM, EXtmm, VexTmm }, 0 }, > - { "tdpbssd", {TMM, EXtmm, VexTmm }, 0 }, > + { "tdpbuud", {TMM, Rtmm, VexTmm }, 0 }, > + { "tdpbsud", {TMM, Rtmm, VexTmm }, 0 }, > + { "tdpbusd", {TMM, Rtmm, VexTmm }, 0 }, > + { "tdpbssd", {TMM, Rtmm, VexTmm }, 0 }, > }, > > - /* PREFIX_VEX_0F386C_X86_64_M_1_L_0_W_0 */ > + /* PREFIX_VEX_0F386C_X86_64_L_0_W_0 */ > { > - { "tcmmrlfp16ps", { TMM, EXtmm, VexTmm }, 0 }, > + { "tcmmrlfp16ps", { TMM, Rtmm, VexTmm }, 0 }, > { Bad_Opcode }, > - { "tcmmimfp16ps", { TMM, EXtmm, VexTmm }, 0 }, > + { "tcmmimfp16ps", { TMM, Rtmm, VexTmm }, 0 }, > }, > > /* PREFIX_VEX_0F3872 */ > @@ -4283,19 +4267,19 @@ static const struct dis386 x86_64_table[ > /* X86_64_VEX_0F385C */ > { > { Bad_Opcode }, > - { MOD_TABLE (MOD_VEX_0F385C_X86_64) }, > + { VEX_LEN_TABLE (VEX_LEN_0F385C_X86_64) }, > }, > > /* X86_64_VEX_0F385E */ > { > { Bad_Opcode }, > - { MOD_TABLE (MOD_VEX_0F385E_X86_64) }, > + { VEX_LEN_TABLE (VEX_LEN_0F385E_X86_64) }, > }, > > /* X86_64_VEX_0F386C */ > { > { Bad_Opcode }, > - { MOD_TABLE (MOD_VEX_0F386C_X86_64) }, > + { VEX_LEN_TABLE (VEX_LEN_0F386C_X86_64) }, > }, > > /* X86_64_VEX_0F38E0 */ > @@ -5296,7 +5280,7 @@ static const struct dis386 xop_table[][2 > /* 10 */ > { Bad_Opcode }, > { Bad_Opcode }, > - { MOD_TABLE (MOD_XOP_09_12) }, > + { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_12) }, > { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > @@ -5951,7 +5935,7 @@ static const struct dis386 vex_table[][2 > { Bad_Opcode }, > { Bad_Opcode }, > /* 50 */ > - { MOD_TABLE (MOD_0F50) }, > + { "vmovmskpX", { Gdq, Ux }, PREFIX_OPCODE }, > { PREFIX_TABLE (PREFIX_0F51) }, > { PREFIX_TABLE (PREFIX_0F52) }, > { PREFIX_TABLE (PREFIX_0F53) }, > @@ -6102,7 +6086,7 @@ static const struct dis386 vex_table[][2 > { "vpaddq", { XM, Vex, EXx }, PREFIX_DATA }, > { "vpmullw", { XM, Vex, EXx }, PREFIX_DATA }, > { VEX_LEN_TABLE (VEX_LEN_0FD6) }, > - { MOD_TABLE (MOD_VEX_0FD7) }, > + { "vpmovmskb", { Gdq, Ux }, PREFIX_DATA }, > /* d8 */ > { "vpsubusb", { XM, Vex, EXx }, PREFIX_DATA }, > { "vpsubusw", { XM, Vex, EXx }, PREFIX_DATA }, > @@ -6929,19 +6913,19 @@ static const struct dis386 vex_len_table > { VEX_W_TABLE (VEX_W_0F385A_L_0) }, > }, > > - /* VEX_LEN_0F385C_X86_64_M_1 */ > + /* VEX_LEN_0F385C_X86_64 */ > { > - { VEX_W_TABLE (VEX_W_0F385C_X86_64_M_1_L_0) }, > + { VEX_W_TABLE (VEX_W_0F385C_X86_64_L_0) }, > }, > > - /* VEX_LEN_0F385E_X86_64_M_1 */ > + /* VEX_LEN_0F385E_X86_64 */ > { > - { VEX_W_TABLE (VEX_W_0F385E_X86_64_M_1_L_0) }, > + { VEX_W_TABLE (VEX_W_0F385E_X86_64_L_0) }, > }, > > - /* VEX_LEN_0F386C_X86_64_M_1 */ > + /* VEX_LEN_0F386C_X86_64 */ > { > - { VEX_W_TABLE (VEX_W_0F386C_X86_64_M_1_L_0) }, > + { VEX_W_TABLE (VEX_W_0F386C_X86_64_L_0) }, > }, > > /* VEX_LEN_0F38DB */ > @@ -7247,9 +7231,9 @@ static const struct dis386 vex_len_table > { REG_TABLE (REG_XOP_09_02_L_0) }, > }, > > - /* VEX_LEN_0FXOP_09_12_M_1 */ > + /* VEX_LEN_0FXOP_09_12 */ > { > - { REG_TABLE (REG_XOP_09_12_M_1_L_0) }, > + { REG_TABLE (REG_XOP_09_12_L_0) }, > }, > > /* VEX_LEN_0FXOP_09_82_W_0 */ > @@ -7573,16 +7557,16 @@ static const struct dis386 vex_w_table[] > { "vbroadcasti128", { XM, Mxmm }, PREFIX_DATA }, > }, > { > - /* VEX_W_0F385C_X86_64_M_1_L_0 */ > - { PREFIX_TABLE (PREFIX_VEX_0F385C_X86_64_M_1_L_0_W_0) }, > + /* VEX_W_0F385C_X86_64_L_0 */ > + { PREFIX_TABLE (PREFIX_VEX_0F385C_X86_64_L_0_W_0) }, > }, > { > - /* VEX_W_0F385E_X86_64_M_1_L_0 */ > - { PREFIX_TABLE (PREFIX_VEX_0F385E_X86_64_M_1_L_0_W_0) }, > + /* VEX_W_0F385E_X86_64_L_0 */ > + { PREFIX_TABLE (PREFIX_VEX_0F385E_X86_64_L_0_W_0) }, > }, > { > - /* VEX_W_0F386C_X86_64_M_1_L_0 */ > - { PREFIX_TABLE (PREFIX_VEX_0F386C_X86_64_M_1_L_0_W_0) }, > + /* VEX_W_0F386C_X86_64_L_0 */ > + { PREFIX_TABLE (PREFIX_VEX_0F386C_X86_64_L_0_W_0) }, > }, > { > /* VEX_W_0F3872_P_1 */ > @@ -7883,16 +7867,6 @@ static const struct dis386 mod_table[][2 > { VEX_C5_TABLE (VEX_0F) }, > }, > { > - /* MOD_C6_REG_7 */ > - { Bad_Opcode }, > - { RM_TABLE (RM_C6_REG_7) }, > - }, > - { > - /* MOD_C7_REG_7 */ > - { Bad_Opcode }, > - { RM_TABLE (RM_C7_REG_7) }, > - }, > - { > /* MOD_0F01_REG_0 */ > { X86_64_TABLE (X86_64_0F01_REG_0) }, > { RM_TABLE (RM_0F01_REG_0) }, > @@ -7998,11 +7972,6 @@ static const struct dis386 mod_table[][2 > { REG_TABLE (REG_0F1E_P_1_MOD_3) }, > }, > { > - /* MOD_0F50 */ > - { Bad_Opcode }, > - { "VmovmskpX", { Gdq, Ux }, PREFIX_OPCODE }, > - }, > - { > /* MOD_0FAE_REG_0 */ > { "fxsave", { FXSAVE }, 0 }, > { PREFIX_TABLE (PREFIX_0FAE_REG_0_MOD_3) }, > @@ -8053,60 +8022,15 @@ static const struct dis386 mod_table[][2 > { PREFIX_TABLE (PREFIX_0FC7_REG_7_MOD_3) } > }, > { > - /* MOD_0FD7 */ > - { Bad_Opcode }, > - { "pmovmskb", { Gdq, Nq }, 0 }, > - }, > - { > /* MOD_0F38DC_PREFIX_1 */ > { "aesenc128kl", { XM, M }, 0 }, > { "loadiwkey", { XM, EXx }, 0 }, > }, > { > - /* MOD_0F38FA_PREFIX_1 */ > - { Bad_Opcode }, > - { "encodekey128", { Gd, Ed }, 0 }, > - }, > - { > - /* MOD_0F38FB_PREFIX_1 */ > - { Bad_Opcode }, > - { "encodekey256", { Gd, Ed }, 0 }, > - }, > - { > - /* MOD_0F3A0F_PREFIX_1 */ > - { Bad_Opcode }, > - { REG_TABLE (REG_0F3A0F_PREFIX_1_MOD_3) }, > - }, > - { > - /* MOD_VEX_0FD7 */ > - { Bad_Opcode }, > - { "vpmovmskb", { Gdq, Ux }, PREFIX_DATA }, > - }, > - { > /* MOD_VEX_0F3849_X86_64_L_0_W_0 */ > { PREFIX_TABLE (PREFIX_VEX_0F3849_X86_64_L_0_W_0_M_0) }, > { PREFIX_TABLE (PREFIX_VEX_0F3849_X86_64_L_0_W_0_M_1) }, > }, > - { > - /* MOD_VEX_0F385C_X86_64 */ > - { Bad_Opcode }, > - { VEX_LEN_TABLE (VEX_LEN_0F385C_X86_64_M_1) }, > - }, > - { > - /* MOD_VEX_0F385E_X86_64 */ > - { Bad_Opcode }, > - { VEX_LEN_TABLE (VEX_LEN_0F385E_X86_64_M_1) }, > - }, > - { > - /* MOD_VEX_0F386C_X86_64 */ > - { Bad_Opcode }, > - { VEX_LEN_TABLE (VEX_LEN_0F386C_X86_64_M_1) }, > - }, > - { > - /* MOD_XOP_09_12 */ > - { Bad_Opcode }, > - { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_12_M_1) }, > - }, > > #include "i386-dis-evex-mod.h" > }; > @@ -8205,7 +8129,7 @@ static const struct dis386 rm_table[][8] > { "sfence", { Skip_MODRM }, 0 }, > }, > { > - /* RM_0F3A0F_P_1_MOD_3_REG_0 */ > + /* RM_0F3A0F_P_1_R_0 */ > { "hreset", { Skip_MODRM, Ib }, 0 }, > }, > { > @@ -9949,16 +9873,6 @@ swap_operand (instr_info *ins) > } > > static bool > -OP_Skip_MODRM (instr_info *ins, int bytemode ATTRIBUTE_UNUSED, > - int sizeflag ATTRIBUTE_UNUSED) > -{ > - /* Skip mod/rm byte. */ > - MODRM_CHECK; > - ins->codep++; > - return true; > -} > - > -static bool > dofloat (instr_info *ins, int sizeflag) > { > const struct dis386 *dp; > @@ -11249,6 +11163,19 @@ BadOp (instr_info *ins) > } > > static bool > +OP_Skip_MODRM (instr_info *ins, int bytemode ATTRIBUTE_UNUSED, > + int sizeflag ATTRIBUTE_UNUSED) > +{ > + if (ins->modrm.mod != 3) > + return BadOp (ins); > + > + /* Skip mod/rm byte. */ > + MODRM_CHECK; > + ins->codep++; > + return true; > +} > + > +static bool > OP_E_memory (instr_info *ins, int bytemode, int sizeflag) > { > int add = (ins->rex & REX_B) ? 8 : 0; > @@ -12566,6 +12493,7 @@ OP_R (instr_info *ins, int bytemode, int > > switch (bytemode) > { > + case d_mode: > case dq_mode: > case mask_mode: > return OP_E (ins, bytemode, sizeflag); This hunk was missing here, due to an insufficiently refreshed patch: --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -432,7 +432,7 @@ static const struct dis386 evex_table[][ { VEX_W_TABLE (VEX_W_0F3879) }, { VEX_W_TABLE (EVEX_W_0F387A) }, { VEX_W_TABLE (EVEX_W_0F387B) }, - { MOD_TABLE (MOD_EVEX_0F387C) }, + { "vpbroadcastK", { XM, Rdq }, PREFIX_DATA }, { "vpermt2%BW", { XM, Vex, EXx }, PREFIX_DATA }, { "vpermt2%DQ", { XM, Vex, EXx }, PREFIX_DATA }, { "vpermt2p%XW", { XM, Vex, EXx }, PREFIX_DATA }, > --- a/opcodes/i386-dis-evex-mod.h > +++ b/opcodes/i386-dis-evex-mod.h > @@ -1,15 +1 @@ > - /* MOD_EVEX_0F387A_W_0 */ > - { > - { Bad_Opcode }, > - { "vpbroadcastb", { XM, Ed }, PREFIX_DATA }, > - }, > - /* MOD_EVEX_0F387B_W_0 */ > - { > - { Bad_Opcode }, > - { "vpbroadcastw", { XM, Ed }, PREFIX_DATA }, > - }, > - /* MOD_EVEX_0F387C */ > - { > - { Bad_Opcode }, > - { "vpbroadcastK", { XM, Edq }, PREFIX_DATA }, > - }, > +/* Nothing at present. */ > --- a/opcodes/i386-dis-evex-w.h > +++ b/opcodes/i386-dis-evex-w.h > @@ -363,11 +363,11 @@ > }, > /* EVEX_W_0F387A */ > { > - { MOD_TABLE (MOD_EVEX_0F387A_W_0) }, > + { "vpbroadcastb", { XM, Rd }, PREFIX_DATA }, > }, > /* EVEX_W_0F387B */ > { > - { MOD_TABLE (MOD_EVEX_0F387B_W_0) }, > + { "vpbroadcastw", { XM, Rd }, PREFIX_DATA }, > }, > /* EVEX_W_0F3883 */ > { >