From patchwork Tue Jul 4 15:21: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: 115830 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp1295755vqx; Tue, 4 Jul 2023 08:21:23 -0700 (PDT) X-Google-Smtp-Source: APBJJlFXqVmJoGWt3PBHxatN1P4FCT78xAgMkBvV/PR4kGeV4XYv8wvCUdxOe/KHyWPPPI0dzXvy X-Received: by 2002:ac2:5e2f:0:b0:4f9:5ac3:4133 with SMTP id o15-20020ac25e2f000000b004f95ac34133mr8633147lfg.25.1688484083247; Tue, 04 Jul 2023 08:21:23 -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 w12-20020a056402128c00b0051e1aefd7ccsi1512302edv.280.2023.07.04.08.21.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jul 2023 08:21:23 -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=XSfONMvT; 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 E17BF3857708 for ; Tue, 4 Jul 2023 15:21:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E17BF3857708 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1688484070; bh=3BfEazilDFrx0BEKK9R08rA/Gm04BhO3/gWf0/8RSVM=; 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=XSfONMvTRhh1Fz4KZTV5yC7BeohoPQc+VhctsNxmcuyKaTvb0AQFvSTSHtS91Mj1m NXRwoPtIX0URmZEEcXazpgf9O7rnwlKHeqNBp8mECNPBPE8/QuN40C/sW6FjE7o9cS 77i4iqJA4bGKGUX9x6qETQZO9dVHDuZ7lEGplVE0= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2066.outbound.protection.outlook.com [40.107.105.66]) by sourceware.org (Postfix) with ESMTPS id 064CD3857723 for ; Tue, 4 Jul 2023 15:20:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 064CD3857723 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SvEXwXywbU0LjR/oyunoq25kogpPL9oprQYuB6eKKs28OwCYKZVu2VRl0WRJ78ftDrwIS3UyslMctAQ3GW/PmuH0/OVznCvXZMsEbuLp2qdDMiGsafcY/mCoS/mJnScM2SsKOd640x1b+eQmtt1N7tcaHMlTMIv+SkdIobO8csx9eLlMp9OabrjZpV04kP5Nxd2+s/VIC7jrprTd99ylXM+Tjs0vHgsCMQC8B7XHGamMBIxlLHnvEyqtCB2YRAj2gJHg++rZAJmxs9PyuSTarO3UvbcRrHVA8v64IfXJC3zZz6BfbThcZ9QM2gYBkiwQext0ZLGfP17Cd7ANGO8sWQ== 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=3BfEazilDFrx0BEKK9R08rA/Gm04BhO3/gWf0/8RSVM=; b=GwqyMwQpCLveqHv9IyfpPZhrbJ3n+hi+ZACEnbAAOXvfFUfj5ychD/Kh/d6uK6yvhGUKin8q7ohqnsOSlGaSRduNDmNHGovNVDPVFwhTFA2eamlorTar05YwqZNt5bamZz4ZTgV6/sBgyAoJeZDLne0Qqv/uN2DNRGN4bUHbv1n+YVZsWUo6HNZV5UE2VVolzgGKwnvA0ZUISUAxEBMaTr6HE/csmL82MhXS9iwZVnZrAYyPFeEMlVfQ4Obz7lUk2gZcXaLimyIgclhWX7HUmuEtEFqE60+lsABDpAaPL2oMa9FUzt0dQYoyawEvmIxZMfhgldQjXuBvkY2J3jPxsw== 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 AS8PR04MB8692.eurprd04.prod.outlook.com (2603:10a6:20b:42b::15) 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:20:55 +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:20:55 +0000 Message-ID: <02a1aabf-4759-009b-5718-f567ed39b81c@suse.com> Date: Tue, 4 Jul 2023 17:21:02 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: [PATCH 04/10] x86: misc further memory-only insns don't need to go through mod_table[] Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR2P281CA0011.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a::21) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|AS8PR04MB8692:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a48c6bb-e29a-42b3-6016-08db7ca242dd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 49Pet/JnfnGD9cy2k8W0gaaOeuGBxE2pDaZKKZpX+xlpCjdMwUFeNJfJc+wvB5wxIrOjXRP+3vGFvaER5Z4o4Z3CxAX0MJsSf7YyaBsvNWw+e7fyoyh72SE8RLavZ2g+VejEeLvdv/y1B0WtKZb33zVQOzEiJbdD/vqPG/mPxOsa7wByYosBHMAC71BIUZYiXQ1I0HHnbdDHpGesxDfd1fDOWRUfB0eDF3Hd3rRDfc+fXXn4fhW2VK+rGK0Y/akuMT/kDNXQIubNq4Sl9reyzyH+8IU2WXwSSSbPnQ7xofaRv29p2/fcok1m7M3Zqi3lFsDpa9WjdyIm0sp7A3XCGLwIOE7YOZC13NdxUXch25n9EeVzNwpnIGuliCOc6ogpmxrKyFBkYXim0M1vcfiouCY46w3B44xI/j/26uqn6EjD8F7VsnWPEDG3K6IIgWwXayOVmhAsAhqIf8QnQaEtQNjmMSc2tKzCyThjxCoB7q+HMnHcL3JxYjOnjgxqb9IOja1IRew8tXuA9lMYVuCbbGIlO0noD22uguGFKq30ggKNx7rKCPNbR8yCJq3N/k8S5pMr4eqRTUNngjaxhg8QCOQteb4+F4+8uJ4+sYPhCh8OGG8K8PZG52rBPV4d+m9srUdONXgHOkcUOSH/5kS5NA== 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)(136003)(39850400004)(376002)(346002)(366004)(396003)(451199021)(478600001)(6666004)(5660300002)(8676002)(36756003)(8936002)(30864003)(31696002)(86362001)(2906002)(38100700002)(66476007)(4326008)(66946007)(66556008)(6916009)(316002)(41300700001)(26005)(31686004)(186003)(6506007)(2616005)(6486002)(6512007)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?N8IlA0wmnIGuRA9UYoCbZVvxX/LC?= =?utf-8?q?9jzjyAYCtrFkhM6pqDuP1JcCrcFPycEhCHhzc25mpUCatX0kp5a89g6H0r+2PfBcg?= =?utf-8?q?psWzmRw+rJlBlVOEpUhd126SAvUnZC2LcE0jegoeaj1b2ir3XXmnRO4qFYGB1y+CW?= =?utf-8?q?68giXurCE7SMjYWkB0aZUf3Mx0QOiCrkCggB3N2/b763nZ7CGkopqQj9KnlLim4t/?= =?utf-8?q?kJCwm9CaMPyDuBzoVr9vkIbC62szNT+o8rUhfRmaA5EGxPS3RpAYFiPo8g6GWh18i?= =?utf-8?q?cXWL4MkiJgmILzEjClIjPFQDo1UcLtNJDjS7hwwDq2oUqQAosg78hLTBiYcY94R9Z?= =?utf-8?q?nFG+rv89vOmZHIA8vXLZegY7X9zrrk+b24Q7645lnLqiPWp//6hfvDauBuJuDocMz?= =?utf-8?q?iWwndUZIgpWjxygQmZWAEeVPlJwhzxsQoJ3xiRmC5wLCQ8SkHrwJlpsYxS7FQJCAw?= =?utf-8?q?uimqIN4xmrgNydTr3fPEXQ3rUf7DLT5+zWuc25dSXzimsDX2crAYLjDPeb24SL4jG?= =?utf-8?q?8Zu9ihfzmcLdUht8OHCAY/kPUpFT4CJZUHgbZjY9m2g19FW7IZjn9je+0gAchTpQQ?= =?utf-8?q?g8OuWZG09V05Ok/6i+CohOgOyBY0zb/DYQLavvp/xTCD+61BuIU8xcEuj8drqY8Nt?= =?utf-8?q?0bbvaKR0jg7cO6UCNRPvFYq6cHbUgzKLDEF83UsQR/eiGi7Y7IecW2mAP/PekC/fj?= =?utf-8?q?qfmR9fR/tZT2DAHUbOJ4AvfHazrgoIN3zNsEpmGT1B4V9N0Z/1Qm+YOuoQNToUYRz?= =?utf-8?q?bAP0qn7wSPCWFnJPupiEIkEAXFqlJj6oerHKevSnWd3e7I4QVkWJyAWn0y1ERyUEf?= =?utf-8?q?Sid4jTAIKhfBdyf57CPuMIN+8m+cANcxnj6WFVh6SeX6ocgjurCWA6HhJwhbDSY1n?= =?utf-8?q?h4cghpw7FZAmpwQ0hhZQ7ktPo9SwYym5sBFQsynZfEcl/bamWHpiUvjGOFuem/rEQ?= =?utf-8?q?aYTlHpOC/ozlDvkCyQE5Hj0b/Ar75vwgFTZTvTvHRVFbJT95QbAFh9w5mmwXa1TLr?= =?utf-8?q?KyrLaS5BpgDBQHZYlgdwoNIc3YE4PqtzjFqnl8bdJgDywUnca4B6XRKyTWNzlJBD+?= =?utf-8?q?GWRFp21ODistnHtdfdc+BhMEJ5jE2hkqAdRJDbFq8JnuGQnGskpqEHKUUd7XtxuD3?= =?utf-8?q?h2CQYWF7Z61sAid09Mgk8xKEM4sMNaZkGsLcNxChLFACDOkJMi9LglEWXxQNz+STc?= =?utf-8?q?ZRNaq9S236/MG7wMdlCEXW5oV1pmGZBl3Ryo5GuHJ6QiqjHJ+1OzRJ+5E2BBqL3Wz?= =?utf-8?q?be5ivsBBj+4VunFF6hZTpBnezM1wWmVzqbf0oNCorwLRxBmytzAfXKkU7MdT5t3uv?= =?utf-8?q?lMCGUzYUOejeKlQJKsYkncOipyfN2LhYBlYGsLeK8EKrFkFbeLsAppDmF7Emi5Q14?= =?utf-8?q?PF80gwQUjYsd8QqnF/m6FNw94gR+C8fYJzdDtQcqGq418XW7Hw5EMxRlnhGe8boqn?= =?utf-8?q?O01BcLZxxPm/B733tl0QlPwRc24IcQQPVKkaJMOYi/S5uk3P7bpWHocfqvr4B1LEE?= =?utf-8?q?IPOMrvdeNasJ?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a48c6bb-e29a-42b3-6016-08db7ca242dd 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:20:55.2503 (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: 86VqwAHshh2RkJl2Or+1mfxyhEv+l/XQ5NKx/73wQxTHK7Fjphb/ep0KP6qCCQEJyhwtngb4WsgvF27vmpIJKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8692 X-Spam-Status: No, score=-3027.4 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?1770503886173412657?= X-GMAIL-MSGID: =?utf-8?q?1770503886173412657?= Several already use OP_M(), which rejects the register forms of insns, and a few others can easily be converted to do so as well. (Note that FXSAVE_Fixup() wires through to OP_M(). Note further that OP_IndirE(), which wasn't placed very well anyway, is moved down to avoid the need to forward-declare BadOp().) Also adjust formatting of and drop PREFIX_OPCODE from a few adjacent entries. --- a/gas/testsuite/gas/i386/disassem.d +++ b/gas/testsuite/gas/i386/disassem.d @@ -8,9 +8,9 @@ Disassembly of section \.text: 0+ <\.text>: -[ ]*[a-f0-9]+:[ ]*ff[ ]*\(bad\) +[ ]*[a-f0-9]+:[ ]*ff[ ]+ljmp[ ]*\(bad\) [ ]*[a-f0-9]+:[ ]*ef[ ]*out %eax,\(%dx\) -[ ]*[a-f0-9]+:[ ]*ff[ ]*\(bad\) +[ ]*[a-f0-9]+:[ ]*ff[ ]+lcall[ ]*\(bad\) [ ]*[a-f0-9]+:[ ]*d8 90 90 90 90 90[ ]*fcoms -0x6f6f6f70\(%eax\) [ ]*[a-f0-9]+:[ ]*c5 ec 4a[ ]*\(bad\) [ ]*[a-f0-9]+:[ ]*9b[ ]*fwait --- a/gas/testsuite/gas/i386/x86-64-disassem.d +++ b/gas/testsuite/gas/i386/x86-64-disassem.d @@ -8,9 +8,9 @@ Disassembly of section \.text: 0+ <\.text>: -[ ]*[a-f0-9]+:[ ]*ff[ ]*\(bad\) +[ ]*[a-f0-9]+:[ ]*ff[ ]+ljmp[ ]*\(bad\) [ ]*[a-f0-9]+:[ ]*ef[ ]*out %eax,\(%dx\) -[ ]*[a-f0-9]+:[ ]*ff[ ]*\(bad\) +[ ]*[a-f0-9]+:[ ]*ff[ ]+lcall[ ]*\(bad\) [ ]*[a-f0-9]+:[ ]*d8 90 90 90 90 90[ ]*fcoms -0x6f6f6f70\(%rax\) [ ]*[a-f0-9]+:[ ]*c5 ec 4a[ ]*\(bad\) [ ]*[a-f0-9]+:[ ]*9b[ ]*fwait --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -413,6 +413,7 @@ fetch_error (const instr_info *ins) #define Mw { OP_M, w_mode } #define Mx { OP_M, x_mode } #define Mxmm { OP_M, xmm_mode } +#define Mymm { OP_M, ymm_mode } #define Gb { OP_G, b_mode } #define Gbnd { OP_G, bnd_mode } #define Gv { OP_G, v_mode } @@ -850,20 +851,17 @@ enum REG_EVEX_0F71, REG_EVEX_0F72, REG_EVEX_0F73, - REG_EVEX_0F38C6_M_0_L_2, - REG_EVEX_0F38C7_M_0_L_2 + REG_EVEX_0F38C6_L_2, + REG_EVEX_0F38C7_L_2 }; enum { MOD_62_32BIT = 0, - MOD_8D, MOD_C4_32BIT, MOD_C5_32BIT, MOD_C6_REG_7, MOD_C7_REG_7, - MOD_FF_REG_3, - MOD_FF_REG_5, MOD_0F01_REG_0, MOD_0F01_REG_1, MOD_0F01_REG_2, @@ -873,11 +871,7 @@ enum MOD_0F02, MOD_0F03, MOD_0F12_PREFIX_0, - MOD_0F12_PREFIX_2, - MOD_0F13, MOD_0F16_PREFIX_0, - MOD_0F16_PREFIX_2, - MOD_0F17, MOD_0F18_REG_0, MOD_0F18_REG_1, MOD_0F18_REG_2, @@ -901,25 +895,10 @@ enum MOD_0FAE_REG_5, MOD_0FAE_REG_6, MOD_0FAE_REG_7, - MOD_0FB2, - MOD_0FB4, - MOD_0FB5, - MOD_0FC7_REG_3, - MOD_0FC7_REG_4, - MOD_0FC7_REG_5, MOD_0FC7_REG_6, MOD_0FC7_REG_7, MOD_0FD7, MOD_0F38DC_PREFIX_1, - MOD_0F38DD_PREFIX_1, - MOD_0F38DE_PREFIX_1, - MOD_0F38DF_PREFIX_1, - MOD_0F38F5, - MOD_0F38F6_PREFIX_0, - MOD_0F38F8_PREFIX_1, - MOD_0F38F8_PREFIX_2, - MOD_0F38F8_PREFIX_3, - MOD_0F38F9, MOD_0F38FA_PREFIX_1, MOD_0F38FB_PREFIX_1, MOD_0F3A0F_PREFIX_1, @@ -940,22 +919,11 @@ enum MOD_VEX_0F93_L_0, MOD_VEX_0F98_L_0, MOD_VEX_0F99_L_0, - MOD_VEX_0FAE_REG_2, - MOD_VEX_0FAE_REG_3, MOD_VEX_0FD7, - MOD_VEX_0F381A, - MOD_VEX_0F382C, - MOD_VEX_0F382D, - MOD_VEX_0F382E, - MOD_VEX_0F382F, MOD_VEX_0F3849_X86_64_L_0_W_0, - MOD_VEX_0F384B_X86_64_L_0_W_0, - MOD_VEX_0F385A, MOD_VEX_0F385C_X86_64, MOD_VEX_0F385E_X86_64, MOD_VEX_0F386C_X86_64, - MOD_VEX_0F388C, - MOD_VEX_0F388E, MOD_VEX_0F3A30_L_0, MOD_VEX_0F3A31_L_0, MOD_VEX_0F3A32_L_0, @@ -963,19 +931,13 @@ enum MOD_XOP_09_12, - MOD_EVEX_0F381A, - MOD_EVEX_0F381B, MOD_EVEX_0F3828_P_1, MOD_EVEX_0F382A_P_1_W_1, MOD_EVEX_0F3838_P_1, MOD_EVEX_0F383A_P_1_W_0, - MOD_EVEX_0F385A, - MOD_EVEX_0F385B, MOD_EVEX_0F387A_W_0, MOD_EVEX_0F387B_W_0, MOD_EVEX_0F387C, - MOD_EVEX_0F38C6, - MOD_EVEX_0F38C7, }; enum @@ -1134,7 +1096,7 @@ enum PREFIX_VEX_0F99_L_0_M_1_W_1, PREFIX_VEX_0F3849_X86_64_L_0_W_0_M_0, PREFIX_VEX_0F3849_X86_64_L_0_W_0_M_1, - PREFIX_VEX_0F384B_X86_64_L_0_W_0_M_0, + 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, @@ -1370,20 +1332,20 @@ enum VEX_LEN_0F93, VEX_LEN_0F98, VEX_LEN_0F99, - VEX_LEN_0FAE_R_2_M_0, - VEX_LEN_0FAE_R_3_M_0, + VEX_LEN_0FAE_R_2, + VEX_LEN_0FAE_R_3, VEX_LEN_0FC4, VEX_LEN_0FC5, VEX_LEN_0FD6, VEX_LEN_0FF7, VEX_LEN_0F3816, VEX_LEN_0F3819, - VEX_LEN_0F381A_M_0, + VEX_LEN_0F381A, VEX_LEN_0F3836, VEX_LEN_0F3841, VEX_LEN_0F3849_X86_64, VEX_LEN_0F384B_X86_64, - VEX_LEN_0F385A_M_0, + VEX_LEN_0F385A, VEX_LEN_0F385C_X86_64_M_1, VEX_LEN_0F385E_X86_64_M_1, VEX_LEN_0F386C_X86_64_M_1, @@ -1483,13 +1445,13 @@ enum { EVEX_LEN_0F3816 = 0, EVEX_LEN_0F3819, - EVEX_LEN_0F381A_M_0, - EVEX_LEN_0F381B_M_0, + EVEX_LEN_0F381A, + EVEX_LEN_0F381B, EVEX_LEN_0F3836, - EVEX_LEN_0F385A_M_0, - EVEX_LEN_0F385B_M_0, - EVEX_LEN_0F38C6_M_0, - EVEX_LEN_0F38C7_M_0, + EVEX_LEN_0F385A, + EVEX_LEN_0F385B, + EVEX_LEN_0F38C6, + EVEX_LEN_0F38C7, EVEX_LEN_0F3A00, EVEX_LEN_0F3A01, EVEX_LEN_0F3A18, @@ -1528,11 +1490,11 @@ enum VEX_W_0F3816_L_1, VEX_W_0F3818, VEX_W_0F3819_L_1, - VEX_W_0F381A_M_0_L_1, - VEX_W_0F382C_M_0, - VEX_W_0F382D_M_0, - VEX_W_0F382E_M_0, - VEX_W_0F382F_M_0, + VEX_W_0F381A_L_1, + VEX_W_0F382C, + VEX_W_0F382D, + VEX_W_0F382E, + VEX_W_0F382F, VEX_W_0F3836, VEX_W_0F3846, VEX_W_0F3849_X86_64_L_0, @@ -1543,7 +1505,7 @@ enum VEX_W_0F3853, VEX_W_0F3858, VEX_W_0F3859, - VEX_W_0F385A_M_0_L_0, + 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, @@ -1669,8 +1631,8 @@ enum EVEX_W_0F3814_P_1, EVEX_W_0F3815_P_1, EVEX_W_0F3819_L_n, - EVEX_W_0F381A_M_0_L_n, - EVEX_W_0F381B_M_0_L_2, + EVEX_W_0F381A_L_n, + EVEX_W_0F381B_L_2, EVEX_W_0F381E, EVEX_W_0F381F, EVEX_W_0F3820_P_1, @@ -1695,8 +1657,8 @@ enum EVEX_W_0F3837, EVEX_W_0F383A_P_1, EVEX_W_0F3859, - EVEX_W_0F385A_M_0_L_n, - EVEX_W_0F385B_M_0_L_2, + EVEX_W_0F385A_L_n, + EVEX_W_0F385B_L_2, EVEX_W_0F3870, EVEX_W_0F3872_P_2, EVEX_W_0F387A, @@ -1966,7 +1928,7 @@ static const struct dis386 dis386[] = { { "movB", { Gb, EbS }, 0 }, { "movS", { Gv, EvS }, 0 }, { "movD", { Sv, Sw }, 0 }, - { MOD_TABLE (MOD_8D) }, + { "leaS", { Gv, M }, 0 }, { "movD", { Sw, Sv }, 0 }, { REG_TABLE (REG_8F) }, /* 90 */ @@ -2120,11 +2082,11 @@ static const struct dis386 dis386_twobyt { PREFIX_TABLE (PREFIX_0F10) }, { PREFIX_TABLE (PREFIX_0F11) }, { PREFIX_TABLE (PREFIX_0F12) }, - { MOD_TABLE (MOD_0F13) }, + { "movlpX", { Mq, XM }, PREFIX_OPCODE }, { "unpcklpX", { XM, EXx }, PREFIX_OPCODE }, { "unpckhpX", { XM, EXx }, PREFIX_OPCODE }, { PREFIX_TABLE (PREFIX_0F16) }, - { MOD_TABLE (MOD_0F17) }, + { "movhpX", { Mq, XM }, PREFIX_OPCODE }, /* 18 */ { REG_TABLE (REG_0F18) }, { "nopQ", { Ev }, 0 }, @@ -2299,10 +2261,10 @@ static const struct dis386 dis386_twobyt /* b0 */ { "cmpxchgB", { Ebh1, Gb }, 0 }, { "cmpxchgS", { Evh1, Gv }, 0 }, - { MOD_TABLE (MOD_0FB2) }, + { "lssS", { Gv, Mp }, 0 }, { "btrS", { Evh1, Gv }, 0 }, - { MOD_TABLE (MOD_0FB4) }, - { MOD_TABLE (MOD_0FB5) }, + { "lfsS", { Gv, Mp }, 0 }, + { "lgsS", { Gv, Mp }, 0 }, { "movz{bR|x}", { Gv, Eb }, 0 }, { "movz{wR|x}", { Gv, Ew }, 0 }, /* yes, there really is movzww ! */ /* b8 */ @@ -2700,9 +2662,9 @@ static const struct dis386 reg_table[][8 { "incQ", { Evh1 }, 0 }, { "decQ", { Evh1 }, 0 }, { "call{@|}", { NOTRACK, indirEv, BND }, 0 }, - { MOD_TABLE (MOD_FF_REG_3) }, + { "{l|}call^", { indirEp }, 0 }, { "jmp{@|}", { NOTRACK, indirEv, BND }, 0 }, - { MOD_TABLE (MOD_FF_REG_5) }, + { "{l|}jmp^", { indirEp }, 0 }, { "push{P|}", { stackEv }, 0 }, { Bad_Opcode }, }, @@ -2856,9 +2818,9 @@ static const struct dis386 reg_table[][8 { Bad_Opcode }, { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } }, 0 }, { Bad_Opcode }, - { MOD_TABLE (MOD_0FC7_REG_3) }, - { MOD_TABLE (MOD_0FC7_REG_4) }, - { MOD_TABLE (MOD_0FC7_REG_5) }, + { "xrstors", { FXSAVE }, 0 }, + { "xsavec", { FXSAVE }, 0 }, + { "xsaves", { FXSAVE }, 0 }, { MOD_TABLE (MOD_0FC7_REG_6) }, { MOD_TABLE (MOD_0FC7_REG_7) }, }, @@ -2897,8 +2859,8 @@ static const struct dis386 reg_table[][8 { { Bad_Opcode }, { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0FAE_REG_2) }, - { MOD_TABLE (MOD_VEX_0FAE_REG_3) }, + { VEX_LEN_TABLE (VEX_LEN_0FAE_R_2) }, + { VEX_LEN_TABLE (VEX_LEN_0FAE_R_3) }, }, /* REG_VEX_0F3849_X86_64_L_0_W_0_M_1_P_0 */ { @@ -3124,16 +3086,16 @@ static const struct dis386 prefix_table[ /* PREFIX_0F12 */ { { MOD_TABLE (MOD_0F12_PREFIX_0) }, - { "movsldup", { XM, EXx }, PREFIX_OPCODE }, - { MOD_TABLE (MOD_0F12_PREFIX_2) }, - { "movddup", { XM, EXq }, PREFIX_OPCODE }, + { "movsldup", { XM, EXx }, 0 }, + { "%XEVmovlpYX", { XM, Vex, Mq }, 0 }, + { "movddup", { XM, EXq }, 0 }, }, /* PREFIX_0F16 */ { { MOD_TABLE (MOD_0F16_PREFIX_0) }, - { "movshdup", { XM, EXx }, PREFIX_OPCODE }, - { MOD_TABLE (MOD_0F16_PREFIX_2) }, + { "movshdup", { XM, EXx }, 0 }, + { "%XEVmovhpYX", { XM, Vex, Mq }, 0 }, }, /* PREFIX_0F18_REG_6_MOD_0_X86_64 */ @@ -3570,21 +3532,21 @@ static const struct dis386 prefix_table[ /* PREFIX_0F38DD */ { { Bad_Opcode }, - { MOD_TABLE (MOD_0F38DD_PREFIX_1) }, + { "aesdec128kl", { XM, M }, 0 }, { "aesenclast", { XM, EXx }, 0 }, }, /* PREFIX_0F38DE */ { { Bad_Opcode }, - { MOD_TABLE (MOD_0F38DE_PREFIX_1) }, + { "aesenc256kl", { XM, M }, 0 }, { "aesdec", { XM, EXx }, 0 }, }, /* PREFIX_0F38DF */ { { Bad_Opcode }, - { MOD_TABLE (MOD_0F38DF_PREFIX_1) }, + { "aesdec256kl", { XM, M }, 0 }, { "aesdeclast", { XM, EXx }, 0 }, }, @@ -3606,18 +3568,18 @@ static const struct dis386 prefix_table[ /* PREFIX_0F38F6 */ { - { MOD_TABLE (MOD_0F38F6_PREFIX_0) }, - { "adoxS", { Gdq, Edq}, PREFIX_OPCODE }, - { "adcxS", { Gdq, Edq}, PREFIX_OPCODE }, + { "wrssK", { M, Gdq }, 0 }, + { "adoxS", { Gdq, Edq}, 0 }, + { "adcxS", { Gdq, Edq}, 0 }, { Bad_Opcode }, }, /* PREFIX_0F38F8 */ { { Bad_Opcode }, - { MOD_TABLE (MOD_0F38F8_PREFIX_1) }, - { MOD_TABLE (MOD_0F38F8_PREFIX_2) }, - { MOD_TABLE (MOD_0F38F8_PREFIX_3) }, + { "enqcmds", { Gva, M }, 0 }, + { "movdir64b", { Gva, M }, 0 }, + { "enqcmd", { Gva, M }, 0 }, }, /* PREFIX_0F38FA */ { @@ -3926,7 +3888,7 @@ static const struct dis386 prefix_table[ { RM_TABLE (RM_VEX_0F3849_X86_64_L_0_W_0_M_1_P_3) }, }, - /* PREFIX_VEX_0F384B_X86_64_L_0_W_0_M_0 */ + /* PREFIX_VEX_0F384B_X86_64_L_0_W_0 */ { { Bad_Opcode }, { "tilestored", { MVexSIBMEM, TMM }, 0 }, @@ -4740,12 +4702,12 @@ static const struct dis386 three_byte_ta { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { MOD_TABLE (MOD_0F38F5) }, + { "wrussK", { M, Gdq }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_0F38F6) }, { Bad_Opcode }, /* f8 */ { PREFIX_TABLE (PREFIX_0F38F8) }, - { MOD_TABLE (MOD_0F38F9) }, + { "movdiri", { Mdq, Gdq }, PREFIX_OPCODE }, { PREFIX_TABLE (PREFIX_0F38FA) }, { PREFIX_TABLE (PREFIX_0F38FB) }, { PREFIX_TABLE (PREFIX_0F38FC) }, @@ -6246,7 +6208,7 @@ static const struct dis386 vex_table[][2 /* 18 */ { VEX_W_TABLE (VEX_W_0F3818) }, { VEX_LEN_TABLE (VEX_LEN_0F3819) }, - { MOD_TABLE (MOD_VEX_0F381A) }, + { VEX_LEN_TABLE (VEX_LEN_0F381A) }, { Bad_Opcode }, { "vpabsb", { XM, EXx }, PREFIX_DATA }, { "vpabsw", { XM, EXx }, PREFIX_DATA }, @@ -6266,10 +6228,10 @@ static const struct dis386 vex_table[][2 { "vpcmpeqq", { XM, Vex, EXx }, PREFIX_DATA }, { "vmovntdqa", { XM, Mx }, PREFIX_DATA }, { "vpackusdw", { XM, Vex, EXx }, PREFIX_DATA }, - { MOD_TABLE (MOD_VEX_0F382C) }, - { MOD_TABLE (MOD_VEX_0F382D) }, - { MOD_TABLE (MOD_VEX_0F382E) }, - { MOD_TABLE (MOD_VEX_0F382F) }, + { VEX_W_TABLE (VEX_W_0F382C) }, + { VEX_W_TABLE (VEX_W_0F382D) }, + { VEX_W_TABLE (VEX_W_0F382E) }, + { VEX_W_TABLE (VEX_W_0F382F) }, /* 30 */ { "vpmovzxbw", { XM, EXxmmq }, PREFIX_DATA }, { "vpmovzxbd", { XM, EXxmmqd }, PREFIX_DATA }, @@ -6318,7 +6280,7 @@ static const struct dis386 vex_table[][2 /* 58 */ { VEX_W_TABLE (VEX_W_0F3858) }, { VEX_W_TABLE (VEX_W_0F3859) }, - { MOD_TABLE (MOD_VEX_0F385A) }, + { VEX_LEN_TABLE (VEX_LEN_0F385A) }, { Bad_Opcode }, { X86_64_TABLE (X86_64_VEX_0F385C) }, { Bad_Opcode }, @@ -6374,9 +6336,9 @@ static const struct dis386 vex_table[][2 { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F388C) }, + { "vpmaskmov%DQ", { XM, Vex, Mx }, PREFIX_DATA }, { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F388E) }, + { "vpmaskmov%DQ", { Mx, Vex, XM }, PREFIX_DATA }, { Bad_Opcode }, /* 90 */ { "vpgatherd%DQ", { XM, MVexVSIBDWpX, VexGatherD }, PREFIX_DATA }, @@ -6808,12 +6770,12 @@ static const struct dis386 vex_len_table /* VEX_LEN_0F12_P_2 */ { - { MOD_TABLE (MOD_0F12_PREFIX_2) }, + { "%XEVmovlpYX", { XM, Vex, Mq }, 0 }, }, /* VEX_LEN_0F13 */ { - { MOD_TABLE (MOD_0F13) }, + { "%XEVmovlpYX", { Mq, XM }, PREFIX_OPCODE }, }, /* VEX_LEN_0F16_P_0 */ @@ -6823,12 +6785,12 @@ static const struct dis386 vex_len_table /* VEX_LEN_0F16_P_2 */ { - { MOD_TABLE (MOD_0F16_PREFIX_2) }, + { "%XEVmovhpYX", { XM, Vex, Mq }, 0 }, }, /* VEX_LEN_0F17 */ { - { MOD_TABLE (MOD_0F17) }, + { "%XEVmovhpYX", { Mq, XM }, PREFIX_OPCODE }, }, /* VEX_LEN_0F41 */ @@ -6929,12 +6891,12 @@ static const struct dis386 vex_len_table { MOD_TABLE (MOD_VEX_0F99_L_0) }, }, - /* VEX_LEN_0FAE_R_2_M_0 */ + /* VEX_LEN_0FAE_R_2 */ { { "vldmxcsr", { Md }, 0 }, }, - /* VEX_LEN_0FAE_R_3_M_0 */ + /* VEX_LEN_0FAE_R_3 */ { { "vstmxcsr", { Md }, 0 }, }, @@ -6971,10 +6933,10 @@ static const struct dis386 vex_len_table { VEX_W_TABLE (VEX_W_0F3819_L_1) }, }, - /* VEX_LEN_0F381A_M_0 */ + /* VEX_LEN_0F381A */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F381A_M_0_L_1) }, + { VEX_W_TABLE (VEX_W_0F381A_L_1) }, }, /* VEX_LEN_0F3836 */ @@ -6998,10 +6960,10 @@ static const struct dis386 vex_len_table { VEX_W_TABLE (VEX_W_0F384B_X86_64_L_0) }, }, - /* VEX_LEN_0F385A_M_0 */ + /* VEX_LEN_0F385A */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F385A_M_0_L_0) }, + { VEX_W_TABLE (VEX_W_0F385A_L_0) }, }, /* VEX_LEN_0F385C_X86_64_M_1 */ @@ -7584,23 +7546,23 @@ static const struct dis386 vex_w_table[] { "vbroadcastsd", { XM, EXq }, PREFIX_DATA }, }, { - /* VEX_W_0F381A_M_0_L_1 */ + /* VEX_W_0F381A_L_1 */ { "vbroadcastf128", { XM, Mxmm }, PREFIX_DATA }, }, { - /* VEX_W_0F382C_M_0 */ + /* VEX_W_0F382C */ { "vmaskmovps", { XM, Vex, Mx }, PREFIX_DATA }, }, { - /* VEX_W_0F382D_M_0 */ + /* VEX_W_0F382D */ { "vmaskmovpd", { XM, Vex, Mx }, PREFIX_DATA }, }, { - /* VEX_W_0F382E_M_0 */ + /* VEX_W_0F382E */ { "vmaskmovps", { Mx, Vex, XM }, PREFIX_DATA }, }, { - /* VEX_W_0F382F_M_0 */ + /* VEX_W_0F382F */ { "vmaskmovpd", { Mx, Vex, XM }, PREFIX_DATA }, }, { @@ -7617,7 +7579,7 @@ static const struct dis386 vex_w_table[] }, { /* VEX_W_0F384B_X86_64_L_0 */ - { MOD_TABLE (MOD_VEX_0F384B_X86_64_L_0_W_0) }, + { PREFIX_TABLE (PREFIX_VEX_0F384B_X86_64_L_0_W_0) }, }, { /* VEX_W_0F3850 */ @@ -7644,7 +7606,7 @@ static const struct dis386 vex_w_table[] { "vpbroadcastq", { XM, EXq }, PREFIX_DATA }, }, { - /* VEX_W_0F385A_M_0_L_0 */ + /* VEX_W_0F385A_L_0 */ { "vbroadcasti128", { XM, Mxmm }, PREFIX_DATA }, }, { @@ -7948,10 +7910,6 @@ static const struct dis386 mod_table[][2 { EVEX_TABLE (EVEX_0F) }, }, { - /* MOD_8D */ - { "leaS", { Gv, M }, 0 }, - }, - { /* MOD_C4_32BIT */ { "lesS", { Gv, Mp }, 0 }, { VEX_C4_TABLE (VEX_0F) }, @@ -7972,14 +7930,6 @@ static const struct dis386 mod_table[][2 { RM_TABLE (RM_C7_REG_7) }, }, { - /* MOD_FF_REG_3 */ - { "{l|}call^", { indirEp }, 0 }, - }, - { - /* MOD_FF_REG_5 */ - { "{l|}jmp^", { indirEp }, 0 }, - }, - { /* MOD_0F01_REG_0 */ { X86_64_TABLE (X86_64_0F01_REG_0) }, { RM_TABLE (RM_0F01_REG_0) }, @@ -8025,27 +7975,11 @@ static const struct dis386 mod_table[][2 { "%XEVmovhlpY%XS", { XM, Vex, EXq }, 0 }, }, { - /* MOD_0F12_PREFIX_2 */ - { "%XEVmovlpYX", { XM, Vex, EXq }, 0 }, - }, - { - /* MOD_0F13 */ - { "%XEVmovlpYX", { EXq, XM }, PREFIX_OPCODE }, - }, - { /* MOD_0F16_PREFIX_0 */ { "%XEVmovhpYX", { XM, Vex, EXq }, 0 }, { "%XEVmovlhpY%XS", { XM, Vex, EXq }, 0 }, }, { - /* MOD_0F16_PREFIX_2 */ - { "%XEVmovhpYX", { XM, Vex, EXq }, 0 }, - }, - { - /* MOD_0F17 */ - { "%XEVmovhpYX", { EXq, XM }, PREFIX_OPCODE }, - }, - { /* MOD_0F18_REG_0 */ { "prefetchnta", { Mb }, 0 }, { "nopQ", { Ev }, 0 }, @@ -8161,30 +8095,6 @@ static const struct dis386 mod_table[][2 { RM_TABLE (RM_0FAE_REG_7_MOD_3) }, }, { - /* MOD_0FB2 */ - { "lssS", { Gv, Mp }, 0 }, - }, - { - /* MOD_0FB4 */ - { "lfsS", { Gv, Mp }, 0 }, - }, - { - /* MOD_0FB5 */ - { "lgsS", { Gv, Mp }, 0 }, - }, - { - /* MOD_0FC7_REG_3 */ - { "xrstors", { FXSAVE }, 0 }, - }, - { - /* MOD_0FC7_REG_4 */ - { "xsavec", { FXSAVE }, 0 }, - }, - { - /* MOD_0FC7_REG_5 */ - { "xsaves", { FXSAVE }, 0 }, - }, - { /* MOD_0FC7_REG_6 */ { PREFIX_TABLE (PREFIX_0FC7_REG_6_MOD_0) }, { PREFIX_TABLE (PREFIX_0FC7_REG_6_MOD_3) } @@ -8205,42 +8115,6 @@ static const struct dis386 mod_table[][2 { "loadiwkey", { XM, EXx }, 0 }, }, { - /* MOD_0F38DD_PREFIX_1 */ - { "aesdec128kl", { XM, M }, 0 }, - }, - { - /* MOD_0F38DE_PREFIX_1 */ - { "aesenc256kl", { XM, M }, 0 }, - }, - { - /* MOD_0F38DF_PREFIX_1 */ - { "aesdec256kl", { XM, M }, 0 }, - }, - { - /* MOD_0F38F5 */ - { "wrussK", { M, Gdq }, PREFIX_DATA }, - }, - { - /* MOD_0F38F6_PREFIX_0 */ - { "wrssK", { M, Gdq }, PREFIX_OPCODE }, - }, - { - /* MOD_0F38F8_PREFIX_1 */ - { "enqcmds", { Gva, M }, PREFIX_OPCODE }, - }, - { - /* MOD_0F38F8_PREFIX_2 */ - { "movdir64b", { Gva, M }, PREFIX_OPCODE }, - }, - { - /* MOD_0F38F8_PREFIX_3 */ - { "enqcmd", { Gva, M }, PREFIX_OPCODE }, - }, - { - /* MOD_0F38F9 */ - { "movdiri", { Edq, Gdq }, PREFIX_OPCODE }, - }, - { /* MOD_0F38FA_PREFIX_1 */ { Bad_Opcode }, { "encodekey128", { Gd, Ed }, 0 }, @@ -8335,52 +8209,16 @@ static const struct dis386 mod_table[][2 { VEX_W_TABLE (VEX_W_0F99_L_0_M_1) }, }, { - /* MOD_VEX_0FAE_REG_2 */ - { VEX_LEN_TABLE (VEX_LEN_0FAE_R_2_M_0) }, - }, - { - /* MOD_VEX_0FAE_REG_3 */ - { VEX_LEN_TABLE (VEX_LEN_0FAE_R_3_M_0) }, - }, - { /* MOD_VEX_0FD7 */ { Bad_Opcode }, { "vpmovmskb", { Gdq, XS }, PREFIX_DATA }, }, { - /* MOD_VEX_0F381A */ - { VEX_LEN_TABLE (VEX_LEN_0F381A_M_0) }, - }, - { - /* MOD_VEX_0F382C */ - { VEX_W_TABLE (VEX_W_0F382C_M_0) }, - }, - { - /* MOD_VEX_0F382D */ - { VEX_W_TABLE (VEX_W_0F382D_M_0) }, - }, - { - /* MOD_VEX_0F382E */ - { VEX_W_TABLE (VEX_W_0F382E_M_0) }, - }, - { - /* MOD_VEX_0F382F */ - { VEX_W_TABLE (VEX_W_0F382F_M_0) }, - }, - { /* 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_0F384B_X86_64_L_0_W_0 */ - { PREFIX_TABLE (PREFIX_VEX_0F384B_X86_64_L_0_W_0_M_0) }, - }, - { - /* MOD_VEX_0F385A */ - { VEX_LEN_TABLE (VEX_LEN_0F385A_M_0) }, - }, - { /* MOD_VEX_0F385C_X86_64 */ { Bad_Opcode }, { VEX_LEN_TABLE (VEX_LEN_0F385C_X86_64_M_1) }, @@ -8396,14 +8234,6 @@ static const struct dis386 mod_table[][2 { VEX_LEN_TABLE (VEX_LEN_0F386C_X86_64_M_1) }, }, { - /* MOD_VEX_0F388C */ - { "vpmaskmov%DQ", { XM, Vex, Mx }, PREFIX_DATA }, - }, - { - /* MOD_VEX_0F388E */ - { "vpmaskmov%DQ", { Mx, Vex, XM }, PREFIX_DATA }, - }, - { /* MOD_VEX_0F3A30_L_0 */ { Bad_Opcode }, { "kshiftr%BW", { MaskG, MaskE, Ib }, PREFIX_DATA }, @@ -11034,14 +10864,6 @@ append_seg (instr_info *ins) oappend_char (ins, ':'); } -static bool -OP_indirE (instr_info *ins, int bytemode, int sizeflag) -{ - if (!ins->intel_syntax) - oappend (ins, "*"); - return OP_E (ins, bytemode, sizeflag); -} - static void print_operand_value (instr_info *ins, bfd_vma disp, enum disassembler_style style) @@ -12116,6 +11938,17 @@ OP_E (instr_info *ins, int bytemode, int } static bool +OP_indirE (instr_info *ins, int bytemode, int sizeflag) +{ + if (ins->modrm.mod == 3 && bytemode == f_mode) + /* bad lcall/ljmp */ + return BadOp (ins); + if (!ins->intel_syntax) + oappend (ins, "*"); + return OP_E (ins, bytemode, sizeflag); +} + +static bool OP_G (instr_info *ins, int bytemode, int sizeflag) { if (ins->vex.evex && !ins->vex.r && ins->address_mode == mode_64bit) --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -322,8 +322,8 @@ static const struct dis386 evex_table[][ /* 18 */ { VEX_W_TABLE (VEX_W_0F3818) }, { EVEX_LEN_TABLE (EVEX_LEN_0F3819) }, - { MOD_TABLE (MOD_EVEX_0F381A) }, - { MOD_TABLE (MOD_EVEX_0F381B) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F381A) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F381B) }, { "%XEvpabsb", { XM, EXx }, PREFIX_DATA }, { "%XEvpabsw", { XM, EXx }, PREFIX_DATA }, { VEX_W_TABLE (EVEX_W_0F381E) }, @@ -394,8 +394,8 @@ static const struct dis386 evex_table[][ /* 58 */ { VEX_W_TABLE (VEX_W_0F3858) }, { VEX_W_TABLE (EVEX_W_0F3859) }, - { MOD_TABLE (MOD_EVEX_0F385A) }, - { MOD_TABLE (MOD_EVEX_0F385B) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F385A) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F385B) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -515,8 +515,8 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { "vpconflict%DQ", { XM, EXx }, PREFIX_DATA }, { Bad_Opcode }, - { MOD_TABLE (MOD_EVEX_0F38C6) }, - { MOD_TABLE (MOD_EVEX_0F38C7) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C6) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7) }, /* C8 */ { "vexp2p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, { Bad_Opcode }, --- a/opcodes/i386-dis-evex-len.h +++ b/opcodes/i386-dis-evex-len.h @@ -13,18 +13,18 @@ static const struct dis386 evex_len_tabl { VEX_W_TABLE (EVEX_W_0F3819_L_n) }, }, - /* EVEX_LEN_0F381A_M_0 */ + /* EVEX_LEN_0F381A */ { { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F381A_M_0_L_n) }, - { VEX_W_TABLE (EVEX_W_0F381A_M_0_L_n) }, + { VEX_W_TABLE (EVEX_W_0F381A_L_n) }, + { VEX_W_TABLE (EVEX_W_0F381A_L_n) }, }, - /* EVEX_LEN_0F381B_M_0 */ + /* EVEX_LEN_0F381B */ { { Bad_Opcode }, { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F381B_M_0_L_2) }, + { VEX_W_TABLE (EVEX_W_0F381B_L_2) }, }, /* EVEX_LEN_0F3836 */ @@ -34,32 +34,32 @@ static const struct dis386 evex_len_tabl { "vperm%DQ", { XM, Vex, EXx }, PREFIX_DATA }, }, - /* EVEX_LEN_0F385A_M_0 */ + /* EVEX_LEN_0F385A */ { { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F385A_M_0_L_n) }, - { VEX_W_TABLE (EVEX_W_0F385A_M_0_L_n) }, + { VEX_W_TABLE (EVEX_W_0F385A_L_n) }, + { VEX_W_TABLE (EVEX_W_0F385A_L_n) }, }, - /* EVEX_LEN_0F385B_M_0 */ + /* EVEX_LEN_0F385B */ { { Bad_Opcode }, { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F385B_M_0_L_2) }, + { VEX_W_TABLE (EVEX_W_0F385B_L_2) }, }, - /* EVEX_LEN_0F38C6_M_0 */ + /* EVEX_LEN_0F38C6 */ { { Bad_Opcode }, { Bad_Opcode }, - { REG_TABLE (REG_EVEX_0F38C6_M_0_L_2) }, + { REG_TABLE (REG_EVEX_0F38C6_L_2) }, }, - /* EVEX_LEN_0F38C7_M_0 */ + /* EVEX_LEN_0F38C7 */ { { Bad_Opcode }, { Bad_Opcode }, - { REG_TABLE (REG_EVEX_0F38C7_M_0_L_2) }, + { REG_TABLE (REG_EVEX_0F38C7_L_2) }, }, /* EVEX_LEN_0F3A00 */ --- a/opcodes/i386-dis-evex-mod.h +++ b/opcodes/i386-dis-evex-mod.h @@ -1,11 +1,3 @@ - /* MOD_EVEX_0F381A */ - { - { EVEX_LEN_TABLE (EVEX_LEN_0F381A_M_0) }, - }, - /* MOD_EVEX_0F381B */ - { - { EVEX_LEN_TABLE (EVEX_LEN_0F381B_M_0) }, - }, /* MOD_EVEX_0F3828_P_1 */ { { Bad_Opcode }, @@ -26,14 +18,6 @@ { Bad_Opcode }, { "vpbroadcastmw2dY", { XM, MaskE }, 0 }, }, - /* MOD_EVEX_0F385A */ - { - { EVEX_LEN_TABLE (EVEX_LEN_0F385A_M_0) }, - }, - /* MOD_EVEX_0F385B */ - { - { EVEX_LEN_TABLE (EVEX_LEN_0F385B_M_0) }, - }, /* MOD_EVEX_0F387A_W_0 */ { { Bad_Opcode }, @@ -49,11 +33,3 @@ { Bad_Opcode }, { "vpbroadcastK", { XM, Edq }, PREFIX_DATA }, }, - { - /* MOD_EVEX_0F38C6 */ - { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_M_0) }, - }, - { - /* MOD_EVEX_0F38C7 */ - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_M_0) }, - }, --- a/opcodes/i386-dis-evex-w.h +++ b/opcodes/i386-dis-evex-w.h @@ -229,15 +229,15 @@ { "vbroadcastf32x2", { XM, EXq }, PREFIX_DATA }, { "%XEvbroadcastsd", { XM, EXq }, PREFIX_DATA }, }, - /* EVEX_W_0F381A_M_0_L_n */ + /* EVEX_W_0F381A_L_n */ { - { "vbroadcastf32x4", { XM, EXxmm }, PREFIX_DATA }, - { "vbroadcastf64x2", { XM, EXxmm }, PREFIX_DATA }, + { "vbroadcastf32x4", { XM, Mxmm }, PREFIX_DATA }, + { "vbroadcastf64x2", { XM, Mxmm }, PREFIX_DATA }, }, - /* EVEX_W_0F381B_M_0_L_2 */ + /* EVEX_W_0F381B_L_2 */ { - { "vbroadcastf32x8", { XM, EXymm }, PREFIX_DATA }, - { "vbroadcastf64x4", { XM, EXymm }, PREFIX_DATA }, + { "vbroadcastf32x8", { XM, Mymm }, PREFIX_DATA }, + { "vbroadcastf64x4", { XM, Mymm }, PREFIX_DATA }, }, /* EVEX_W_0F381E */ { @@ -341,15 +341,15 @@ { "vbroadcasti32x2", { XM, EXq }, PREFIX_DATA }, { "%XEvpbroadcastq", { XM, EXq }, PREFIX_DATA }, }, - /* EVEX_W_0F385A_M_0_L_n */ + /* EVEX_W_0F385A_L_n */ { - { "vbroadcasti32x4", { XM, EXxmm }, PREFIX_DATA }, - { "vbroadcasti64x2", { XM, EXxmm }, PREFIX_DATA }, + { "vbroadcasti32x4", { XM, Mxmm }, PREFIX_DATA }, + { "vbroadcasti64x2", { XM, Mxmm }, PREFIX_DATA }, }, - /* EVEX_W_0F385B_M_0_L_2 */ + /* EVEX_W_0F385B_L_2 */ { - { "vbroadcasti32x8", { XM, EXymm }, PREFIX_DATA }, - { "vbroadcasti64x4", { XM, EXymm }, PREFIX_DATA }, + { "vbroadcasti32x8", { XM, Mymm }, PREFIX_DATA }, + { "vbroadcasti64x4", { XM, Mymm }, PREFIX_DATA }, }, /* EVEX_W_0F3870 */ { --- a/opcodes/i386-dis-evex-reg.h +++ b/opcodes/i386-dis-evex-reg.h @@ -29,7 +29,7 @@ { VEX_W_TABLE (EVEX_W_0F73_R_6) }, { "%XEvpslldqY", { Vex, EXx, Ib }, PREFIX_DATA }, }, - /* REG_EVEX_0F38C6_M_0_L_2 */ + /* REG_EVEX_0F38C6_L_2 */ { { Bad_Opcode }, { "vgatherpf0dp%XW", { MVexVSIBDWpX }, PREFIX_DATA }, @@ -39,7 +39,7 @@ { "vscatterpf0dp%XW", { MVexVSIBDWpX }, PREFIX_DATA }, { "vscatterpf1dp%XW", { MVexVSIBDWpX }, PREFIX_DATA }, }, - /* REG_EVEX_0F38C7_M_0_L_2_W_0 */ + /* REG_EVEX_0F38C7_L_2 */ { { Bad_Opcode }, { "vgatherpf0qp%XW", { MVexVSIBQWpX }, PREFIX_DATA },