From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2059.outbound.protection.outlook.com [40.107.7.59]) by sourceware.org (Postfix) with ESMTPS id DDFF13858D28 for ; Fri, 22 Sep 2023 10:50:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DDFF13858D28 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-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mfiRCfxd5Hk3Ezfvr5U5xHBkITj+jkD65W6FYT6lg8EQ6ceR74bCYUFB410z1MGNihkmDD08GpyxBmim3s6cfQkNbVYgIvVBJwHJPhUkhg4ef8t1dE/bAIe3TfCAYbPCaB642zQNEIO00GkQXTLJiJnwPFan0ys8l0klypRonROxYGOANbuSfoASSFgxW4XqTUUwI1PwDpmuVoDTyO/h2N3yMQ0Ro/LVozWSNupgvRGbp3gB5SczddWCh7t1MaNpRaGGcQTgFSkhPb+a4H/W+VmGdDGYjDX4gUtRnYt0q9HgFHROf8qZENGBNegVLOkzXb8WJcb+czvDRy8BIWgvRw== 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=AkYiuCyqdBISl5JNcMJFsMCysVC0Bjbo8OmI8smk1G0=; b=MYYCh8/IjCrkoHYS7OXUix7tZlTyfBKv6CeOH1IWDSIDaWUR4bYumpc90JKIErooZQ+t5syWUrtd/vcHBy7C4yawkU/Qhy427cpUOSEkrc9tJi8ntw+muYP3BOS/2oFvSIExmybnpOEv5soaJ5lW0dToZVgsJZfraZBJ1n7/0qIMceCqQcGRQKy2GcMdBrlgqF1qoTDIeByA9vPXlsvV/dT6EDTtWuvhh6+LBass1ABQIx4WSngI7xgvyJFfoj4GR+AQNJtQwPqOlB3vy05qzjsSNxJBcYf3viU7fc9amgNmPgzHBkASqifE8MxHcArNdU+ZyFJfzj5lZOQwto0y+A== 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=AkYiuCyqdBISl5JNcMJFsMCysVC0Bjbo8OmI8smk1G0=; b=QMsG4oO+kS78FbTEiIK5qAYHPfaiLxnhudLBBQyExV96qWlCTleDr0Enh9UVhA89rrvdUHFCwLNLHnAKBLuwoVF4dvSbskAmdEEzGVKTz6cuLEh7aZtHMTTmpkn9sCpM/eEmD0ug9Q8nj7grUPwHZepoNF9TnSdInMPWje8zI5I1EtuDwY1pYH5kxYBjP2j9+oZBc4tistH48hDirVPfyu4IhKntsRSXTmveSWQqAioWBDLG/tcWOIe0o8oM/iMwwsl52dRuzKZ1nCPEk4MiJQS+s4DxDt6/IMxq/Iec5lz8+nMWEofEG1VjPfruSEwLt6LZae4dIEe13N4m4RtjGA== 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 AM7PR04MB6933.eurprd04.prod.outlook.com (2603:10a6:20b:10d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.26; Fri, 22 Sep 2023 10:50:38 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::f749:b27f:2187:6654]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::f749:b27f:2187:6654%6]) with mapi id 15.20.6813.017; Fri, 22 Sep 2023 10:50:38 +0000 Message-ID: <2a42468b-007a-c501-e2d2-0b5580e8e5b8@suse.com> Date: Fri, 22 Sep 2023 12:50:35 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH 2/8] Support APX GPR32 with extend evex prefix Content-Language: en-US To: "Cui, Lili" Cc: hongjiu.lu@intel.com, binutils@sourceware.org References: <20230919152527.497773-1-lili.cui@intel.com> <20230919152527.497773-3-lili.cui@intel.com> From: Jan Beulich In-Reply-To: <20230919152527.497773-3-lili.cui@intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0115.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a8::14) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|AM7PR04MB6933:EE_ X-MS-Office365-Filtering-Correlation-Id: 1a6b98f9-a4e0-4327-51fe-08dbbb59c1ac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: E/0VVGCBhh1QCL0+grxNdnX5eGKRr0ENRWF7XeCjpJr2KzrHnfA9MFTURmSQTBPDzjHCFZzUezrFlou6HnhOH3+BkKQFb0jwwNqYN3Y0sY8BMqLjlY/ZlIvLiRPEnXBVwkrP1/CI7EgIxKjP4zghd8kRb0Vpo5VDKRF8HWRBo+Pe2IhPrxGrzcYk3uBkbZg4DavcFqZvKaaw+bDbRRlI++DB0jeJp8g5GD29mqkblhdm47nrvvlZcC5k1EvJJvl/+me9OS4c6uUsP9U4GZq+qxGdkJTK3qcVmbHoaPQzlUfkBuvicUzQO5bN1+YvCGu+/90fewcHaa/3tccih7SZEHifbxp6tSbOtphzwDrCdHWhELmf4f4bWRBJ9GjaWT6Cen3P07UWTOlCcCKlRUV4OEGlxGuZ3HfV8ZwvevY31UXbbIwtC4NiDXBlb9jdssRy3YHQ8m4eqJqzf/FdAG9ZJcFHCFe5ok9dH/yL1uGpZNXgqZeTjGZ9/WBXEtvdiSU3d2KHJdXbnsh7YrrWlFG0gHl/sZnUZBTG+57JC/oPEdUzKwDQQBBinZHytzVrqG0c/JfDFmAlLXRWm4WvehKudHEWxFVRKZKau9x/a92vP/fyscYxEi/22QXVBXe/bsNtWLvYYRsMCLNcldFKSTA0gA== 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)(136003)(376002)(39860400002)(346002)(396003)(451199024)(186009)(1800799009)(6486002)(66476007)(316002)(8676002)(4326008)(41300700001)(8936002)(38100700002)(6512007)(36756003)(2616005)(53546011)(26005)(6666004)(478600001)(31696002)(86362001)(6506007)(66556008)(66946007)(6916009)(31686004)(2906002)(5660300002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UVFWMzNEQW42dGVQTTVNQ0YyMms2QWVPZEtXdmorZHpCN2lOQVUyU0orcFFG?= =?utf-8?B?V2Nwdm1LWGJNb25xbHRxRG54cWdRT0tuMXA5SW8vNW9DYVNRRm9wZHlMTGVK?= =?utf-8?B?anBoVCs4T3ZKSW9WQmhnZ0RJdFFKYkUzZGtnWUU3RmxEZU9tUERlY1JJZUoz?= =?utf-8?B?YVUwMWdLNU53Y0c0N2N5ekNsNk1rQlRER2JGNSt2Z21KTkZnR1hkUFJ0WUlu?= =?utf-8?B?Z2h1a0xiaWJNSUZYWkk2ZmJRbkNBNWFHMjVSa28zQnd6ZldKSGxoRjQ4bHhJ?= =?utf-8?B?QWh4MkZZa3dqYVQxK0I1MjNSKzhuV01UQWlvdlFnejNtMWZDYlFKK2lsTThj?= =?utf-8?B?cGd6K1dxUzF2NnVSMi9RNm15OUg2ZUtHaHlIc3hWUU9FUHFoQ2FFYjl5dG5m?= =?utf-8?B?SEZFWUxRai9STVV2bVN6Y3BFamg4b3J3N3ZYbXoxRzNYZy80OVRyMGdXa0RV?= =?utf-8?B?djRyMTQ0cUorYjB5dFIwdU9tVmVNczVPYnBRcWpoYTRQcW5ZVm1nSkJPVjRT?= =?utf-8?B?MjIzdlQ2ZS9IaG1ycUtURnJ0UjhEeStJZk5hd05qcTE0d24yNko3bVVPdUV3?= =?utf-8?B?ZjNLVE9CZ1hCZlRkak12YitzUTlCYkd0WTdMbHF5Um0vbFhhWGJJd3o1Z0xN?= =?utf-8?B?SlJpa3lNdHpUYjFSZEZNa1M4Q2F1UWZ1QWkzZ2tpWERPeG9ydm95NnNoKzZ0?= =?utf-8?B?ZDlUZHRMM2puYmZTRWF5ekw5c1hFcGZwTUNaUmtHcGJFNkZxWUo2bFdLS3FP?= =?utf-8?B?QVNseFVva01XZlRFUHR2aUd3TC9McndlYVpoMGdBRU1lRUJ3REJYcThQK0dH?= =?utf-8?B?QUlmNFI3M21NcTAweWdwd1BjbU9CeDB0UktXYjhEdnNrdmZnbG4rUGdLYjEr?= =?utf-8?B?YXd3Y0tNbkQydHAyNjk1eGhSWDA5QkFnS2xLYjVKekVyRk53UnVuQ0VWaUk1?= =?utf-8?B?TWpROHJFNVMrWnZYQVZWd2dONDJIRWxBREtpdjhmeDNUcHdqaEk4RHU2dThI?= =?utf-8?B?b1NYbjQ0OCtPZUNCVUF5dnAxRHpiYUVWNmo4U01GWUI2aHprUzNoZ0QxVkVy?= =?utf-8?B?ZkNYQ2xYZjgwdEI2a01wc3ptT05TeVFLZm9qNXVScVZPZzdXQVJ1TllaL2J2?= =?utf-8?B?UGhOZ2VaeTh5N2JGUlFTYVdXaEtYODU3OTlxNmZhNTVlUHdpcTZhanNEcC83?= =?utf-8?B?TnFpSFcwZ1pSZiszVURkaExSSlI0NUJ5SDJtR2dxNkJLQU5lQ0JnMElRNjdl?= =?utf-8?B?Y21yTWk2a3VpYjBJWW83bXU3OFFQK0RHZFBwMklEQlBHcVVBeERCUVlsRDN0?= =?utf-8?B?ZWxCWjVPejN4VTZnRDFtdlBkWWZrSC9lc1ZjT0dOM3ZJZWVIeFNaY1V0VFI0?= =?utf-8?B?Q0NEbGozWkI0QXgvVkNlR0NjU3dic3A0SUN5S3JkaWhnUG9DdnM1VFhranM4?= =?utf-8?B?Mlp5Nlhoa210N1ptQjFZUXNkMmlzWkE3WmtxSis1ZU93TlpsTzJtWEhjbG9B?= =?utf-8?B?ckM2WU4xaHlqaE10aXhmZEpkU3AvM0ViL1pMYVdOeTVRVjY3eXRBazlUbER4?= =?utf-8?B?WFVtcWpzemVpVHowQjQrRUdjOEJjdC9kQjdUOFdqa1FQSjBEYXpPNi93K2dH?= =?utf-8?B?YWJSMkE3dXVsYXFPa3ZzbEFCYlcyc25yaENHYU9qNUpFMHlLaUM0Q0dLNFJy?= =?utf-8?B?M3Raa3p4R29pdzMveGlpUCszQktmQVBRbTBVc0R6WnJVdE9hVU1kWDZZZ2w3?= =?utf-8?B?ZlRMYXlRUGdYQVhmUDNoZ1VBUDRnTHFEeDdaOVRUenpuQzhTLzQzQitON3Jv?= =?utf-8?B?NVl3VFV1QWN1Sk1tNXNPeHZNMWh0ZUdZaTlrY1ZNQkRER0FyY2NSVFdoZ2JN?= =?utf-8?B?SFJSbll5NlE5SjRRUzNjV0NMY0JkV0ZFU1YrQnRRRDBWNyt2YXlJbDJBb1d2?= =?utf-8?B?bk9xRzJPdnI1eDVzaCs5YVYzK3dCMG1CWVFWdU12Sm1BNThlS2l3aDNDbmZh?= =?utf-8?B?cCtFUWFNaWltSDNVODJIbUdNWUJka2I3ZUZNWkNIRXo4RlBVdEhCRC9sRThq?= =?utf-8?B?cWZFK0YwL3ZzbS94L0FOOUhRZzVjUlozYk1GRi9PZ25TWlU0T0dQOVlSbERu?= =?utf-8?Q?riFfGSPAuDnXXKJ8Exz03tZJR?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a6b98f9-a4e0-4327-51fe-08dbbb59c1ac X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2023 10:50:37.9900 (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: OW5Zanzx5Hk2HC5zPXDdypBmLf0lcJjEy8SI9HFlQpMiRpl5BvnfWYR4GkYexcJi9ox1yJ4UuCOUmYeIpDhNsw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6933 X-Spam-Status: No, score=-3033.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,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 List-Id: On 19.09.2023 17:25, Cui, Lili wrote: > --- a/opcodes/i386-dis-evex-len.h > +++ b/opcodes/i386-dis-evex-len.h > @@ -62,6 +62,16 @@ static const struct dis386 evex_len_table[][3] = { > { REG_TABLE (REG_EVEX_0F38C7_L_2) }, > }, > > + /* EVEX_LEN_0F38F2 */ > + { > + { "andnS", { Gdq, VexGdq, Edq }, 0 }, > + }, > + > + /* EVEX_LEN_0F38F3 */ > + { > + { REG_TABLE(REG_EVEX_0F38F3_L_0) }, > + }, > + > /* EVEX_LEN_0F3A00 */ > { > { Bad_Opcode }, > diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h > index f9f912c5094..5a1326a1b73 100644 > --- a/opcodes/i386-dis-evex-mod.h > +++ b/opcodes/i386-dis-evex-mod.h > @@ -1 +1,51 @@ > /* Nothing at present. */ > + /* MOD_EVEX_MAP4_65 */ > + { > + { "wrussK", { M, Gdq }, PREFIX_DATA }, > + }, > + /* MOD_EVEX_MAP4_66_PREFIX_0 */ > + { > + { "wrssK", { M, Gdq }, 0 }, > + }, Not very long ago I invested quite a bit of time to remove unnecessary decoding through mod_table[]. Please don't introduce new instances. Entries should be added here only when both branches are populated (iow it looks as if this patch shouldn't touch this file at all). > --- a/opcodes/i386-dis-evex-prefix.h > +++ b/opcodes/i386-dis-evex-prefix.h > @@ -338,6 +338,89 @@ > { "vcmpp%XH", { MaskG, Vex, EXxh, EXxEVexS, CMP }, 0 }, > { "vcmps%XH", { MaskG, VexScalar, EXw, EXxEVexS, CMP }, 0 }, > }, > + /* PREFIX_EVEX_MAP4_60 */ > + { > + { "movbeS", { Gv, Ev }, 0 }, > + { Bad_Opcode }, > + { "movbeS", { Gv, Ev }, 0 }, > + }, > + /* PREFIX_EVEX_MAP4_61 */ > + { > + { "movbeS", { Ev, Gv }, 0 }, > + { Bad_Opcode }, > + { "movbeS", { Ev, Gv }, 0 }, > + }, In cases like this (of which, aiui, there will be many more), where only prefix 66 is valid, and only to modify operand size, it would be quite desirable to have a new PREFIX_... identifier to use in the parent table entry, such that this additional decode step can be avoided. > --- /dev/null > +++ b/opcodes/i386-dis-evex-x86.h I'm puzzled by the name suffix: x86 is kind of redundant with i386. Main question perhaps is: Do we really need a new file here? It's not a lot that is put here right now, but of course I haven't peeked ahead. > --- a/opcodes/i386-dis-evex.h > +++ b/opcodes/i386-dis-evex.h > @@ -164,10 +164,10 @@ static const struct dis386 evex_table[][256] = { > { Bad_Opcode }, > { Bad_Opcode }, > /* 90 */ > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F90) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F91) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F92) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F93) }, > { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > @@ -375,9 +375,9 @@ static const struct dis386 evex_table[][256] = { > { "vpsllv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, > /* 48 */ > { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F3849) }, > { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F384B) }, > { "vrcp14p%XW", { XM, EXx }, PREFIX_DATA }, > { "vrcp14s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, > { "vrsqrt14p%XW", { XM, EXx }, 0 }, > @@ -545,32 +545,32 @@ static const struct dis386 evex_table[][256] = { > { "%XEvaesdecY", { XM, Vex, EXx }, PREFIX_DATA }, > { "%XEvaesdeclastY", { XM, Vex, EXx }, PREFIX_DATA }, > /* E0 */ > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E0) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E1) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E2) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E3) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E4) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E5) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E6) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E7) }, > /* E8 */ > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E8) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38E9) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38EA) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38EB) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38EC) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38ED) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38EE) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38EF) }, > /* F0 */ > { Bad_Opcode }, > { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F2) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F3) }, > { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > - { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F5) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F6) }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F7) }, > /* F8 */ > { Bad_Opcode }, > { Bad_Opcode }, > @@ -854,7 +854,7 @@ static const struct dis386 evex_table[][256] = { > { Bad_Opcode }, > { Bad_Opcode }, > /* F0 */ > - { Bad_Opcode }, > + { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F3AF0) }, > { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > @@ -872,7 +872,7 @@ static const struct dis386 evex_table[][256] = { > { Bad_Opcode }, > { Bad_Opcode }, > }, > - /* EVEX_MAP5_ */ > + /* EVEX_MAP4_ */ While just an artifact from this, ... > @@ -893,8 +893,8 @@ static const struct dis386 evex_table[][256] = { > { Bad_Opcode }, > { Bad_Opcode }, > /* 10 */ > - { PREFIX_TABLE (PREFIX_EVEX_MAP5_10) }, > - { PREFIX_TABLE (PREFIX_EVEX_MAP5_11) }, > + { Bad_Opcode }, > + { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > @@ -907,7 +907,7 @@ static const struct dis386 evex_table[][256] = { > { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > - { PREFIX_TABLE (PREFIX_EVEX_MAP5_1D) }, > + { Bad_Opcode }, > { Bad_Opcode }, > { Bad_Opcode }, > /* 20 */ ... changes like these are extremely odd to read. Can you please try to split this patch such that initially you simply introduce an empty new sub-table, to avoid such anomalies (which will also affect "git blame" then, I expect)? > --- a/opcodes/i386-dis.c > +++ b/opcodes/i386-dis.c > @@ -132,6 +132,13 @@ enum x86_64_isa > intel64 > }; > > +enum evex_type > +{ > + evex_default = 0, > + evex_from_legacy, > + evex_from_vex, > +}; > + > struct instr_info > { > enum address_mode address_mode; > @@ -212,7 +219,6 @@ struct instr_info > int ll; > bool w; > bool evex; > - bool r; The change to eliminate this field would certainly be nice to be separate from the bulk of thw APX changes here. Jan