From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by sourceware.org (Postfix) with ESMTPS id ACAAE3858400 for ; Wed, 5 Jan 2022 11:32:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ACAAE3858400 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2104.outbound.protection.outlook.com [104.47.18.104]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-15-qy3mb2TuOM-VZ8lX5isWcA-1; Wed, 05 Jan 2022 12:32:50 +0100 X-MC-Unique: qy3mb2TuOM-VZ8lX5isWcA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=deakpoUONVYnaA7neTLaxQLiRlUbxZqLvsX8Jp3FMQiYAStfcejHeopdBkeSpiWb1So+H0WJYttjne22b30mS1UOuJIRADTosI+xZw0aNY7VJU+sgP4SO0WeapkmTo/juI34p4OwUApr2xTMy+Qwetkj1uYb2wB48im9leK7RlL1oFoiI6v/vPugRy451+0f/aEp/B/eTmA/5wRFTMx9KrifRB9siWngCT5+Vm086N5pnpHhqYi+/gmotj/LdFViOpIM5wiJgHALrVaF4VtrwQOL8ASJBCwWzhqRJ18jVtVjJVacMlWP8bmCD52iiYVjX7gXTGHMh1BRZXT6GNm7jQ== 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=adQDGKVJJuLn5g0c1xyPdTNajwCxbopWwXrGqz+7Org=; b=CSJpw+8qjvRzgsY9FiStSjJAJ6jZCSd5rJ2eQuCnP8JXqbgWixyhjnFukZ89rfVtM1mX/jL5wgCSzZRxyPB3gaYYuIBskBbsOAlPzEFeeX3WZI0QU/lrEh52DxyNBNxkJXY8Ltf1PDgjGc5u3p0Blr2Paf651qCPFeMUAVThJ1ij/q71soJjoG3RC9DBrUvYzAlLgfPXpTBwdficGhDFXVG/pdC+tr7DspVw6Msc/vgsj15ovBoO0xtjJH0q+Wawk43zm3EqwmcRRSGGa2RbPhglj0b5z6XYCDnnDJcV/ZO/+JkROFajWkhOdzBK7w0e0nLA3+fqTX25DEgpJu57SQ== 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 VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VE1PR04MB6384.eurprd04.prod.outlook.com (2603:10a6:803:126::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.7; Wed, 5 Jan 2022 11:32:49 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::5951:a489:1cf0:19fe%6]) with mapi id 15.20.4844.016; Wed, 5 Jan 2022 11:32:49 +0000 Message-ID: <7f5b74d5-e5b2-80d5-34a0-33b79f6c42b2@suse.com> Date: Wed, 5 Jan 2022 12:32:47 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: [PATCH 1/6] x86: reduce AVX512-FP16 set of insns decoded through vex_w_table[] Content-Language: en-US To: Binutils References: <9abe0024-186a-bc8d-d443-4010d97ffbe7@suse.com> From: Jan Beulich In-Reply-To: <9abe0024-186a-bc8d-d443-4010d97ffbe7@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS9PR06CA0290.eurprd06.prod.outlook.com (2603:10a6:20b:45a::8) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9bcfd2f-0edf-4b6f-4eb5-08d9d03f1a37 X-MS-TrafficTypeDiagnostic: VE1PR04MB6384:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vBWMS4kCvW7PgLZN0zjjmr9Qmf0nzcEjBwav4EBYIFTocEeQ80AcgRMuM8O2Q2pz+j0pGWU/trwYYxbDC273DJUW7AXpkuQw3Y+TC7asWZoNonimoy8WQRAeKnNki1UxP3gVXbRYdIDB+cklc2DoJvUeQuu7BDXrRfEP3Trgk2etvFk4rB0SakEvzffesYGBc00ycbPDsnRrs5X882O+0Lvt7WlziilmtdWNXqFKCdpyy6dSukpZ5QMD/P2xVfs6UhGGIC9JI7noeGRyy1XUL3C68ZINMNnBiACpXUaljUhdRzSqAfsUrLrUAMUPpQY99oMKfPVQp9QeXK1e8lz/p/V/Mhv7czRTUZeLAgzAoIM8oaWFpnQcYZlv7Yb2rrgXX8gatTPQikkngRky3XmOBvlv1n3WxW6r3hQYjwe3rCWXuW4fqT2pwAXdDvEph6a8l5NGfUvOWyBM9Ea3QtnrUdZCJauF73BQevGBbYM65t9ReajG+8IZQF0YkPtzmYCCuHv5aaSuFNk+u/ujlRHPQ8buwVOhrb5mY/fSb5yE/ZmF36kKFO1fZ6FGgILASMFrIB5ugyuC7el0Qsx0bREcH2Hwp+uvMrOSiHoap19xta1+NV+8q0gUNo3UU9vsEncL5+SYHZKmnoIiuXY4MFsgYhuWYCtTeFTfhEKzT6ESWM9BSNFzpf6h75E/zipnd7at4YxOOGgmQjz4Z0aNWagf1Xt7R18dkfgp9jpWiJ0/4s8nDar4ME5DtybAylgfrVeu X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5600.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(508600001)(66946007)(5660300002)(36756003)(86362001)(66556008)(186003)(66476007)(2616005)(26005)(30864003)(6916009)(2906002)(6486002)(8676002)(6506007)(6512007)(316002)(31686004)(4326008)(31696002)(8936002)(38100700002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cnJNcGt4STJXdER3R2UwUEJNSnl4elNEUm1jK215cG4wd3hlU0dxcHlEeC9z?= =?utf-8?B?Y1lXU2drbVh1b1dDUHdyMmlTWFFjRTJpVXZRTUlOQVFSallMdXZscTEwNHJv?= =?utf-8?B?dlBNNFJvTmh0M2IvTHFBa2hwL1ltajlpWlB4Zkw3NFBhdWJ0YVU1N3FDbmV5?= =?utf-8?B?OUFzbWRIYVFCWmQvRUQrdC9JQmc2WUhKcjJ0WkdNUElQV3lTanVzeTdwVEdx?= =?utf-8?B?WEJZSEJ3RG11RE9nTFBPN2lGcWJEWFhNNFVJbElES3pKUlRmcFNjejdBLzNG?= =?utf-8?B?OVl3NUZuZ28xeWpmdTNXYS9XWEdyOWRDcUdHZnVmV2VOT1g3YWcrd3NGeFJk?= =?utf-8?B?QXB3VUxkZTEvVzVCckkzNzU3V2FkdythR25DWmpXNlNCNEs4RU9malYrUENN?= =?utf-8?B?blBLYk1JWGtMT0d0dXNHSkJIdUVEVUoxZThSMFVJZFd0SjNnY1RtVGkwL25j?= =?utf-8?B?UEs4K1NvaXpXckc1b1p4K1lFeTd5bktmVHNqYkFzYS9jekJwaGU1WHNyblVM?= =?utf-8?B?K1BNTkdMODBGclBwZ3Fmci8zWkdWbGJsZURDWWM3VFd0TXhSZGtZMVUwU1ZQ?= =?utf-8?B?cmVLY0FDZnhzMUpwTFJsdjV1b1luRnZ6VkhZZk0zV2V4Nk8yRGFGZmNXbmZp?= =?utf-8?B?NHRySnpEUUxWTVZLTklWeTdzMnI0RFN5Z2NiQU9GS0xObUxwZDhrVyt6TkFw?= =?utf-8?B?SkhoMUJocE1RTEhwb3Q4Tmo0WTJOdHVoUVNibkZlVUUvaWVQeDN0SFpBOXhT?= =?utf-8?B?QjR1djR0YlVzTVFyQjAyV0t4cGdXa0FQZFM5aTV3akxPWDJRbXNIUTkwWllx?= =?utf-8?B?Y2ZOSlpNNU41dWhQN3NDQXcyR09VSkJvV3ZjZ1VnekEyVjhjeDZhcUlITmpB?= =?utf-8?B?bkFOUnRTY1lMWlNmR2NzUkZYK2pwUm5CWldUYjh2S2hiUGsyQUtwRitTYWc3?= =?utf-8?B?L2ZBQkUzNUdWTjVaMEIvNWg3bkVtUGljbSt4bGcrQXRqNnV3ZFhwWVIyb2lv?= =?utf-8?B?dnNFRHZvMlRPZTR2Nk02T0Z6UzZRZGFiRmdwSWNuekpQcGdNMjl5NElPK0FM?= =?utf-8?B?KzRjcHZIVmxwRmlMOHZscU52MlhWcVk2N1hreG1sODdDYlJSTjRNZVRkZlpK?= =?utf-8?B?R3dyc05hRVJ1WStFUmZ1aE1HdmtrTXlXdHRDSkRYMDcyRVRGb1dsWnYxWmE0?= =?utf-8?B?ZDZCQktwRVpDOE9USlZjdDYxSGpNQnhiNnVIcXM2NGVXR3J5UHdEWlVPM1JF?= =?utf-8?B?cnF4YlBEbmRhc0dFM0hwWGNUbmk5Z1ZEd2V0N2NVbkhla2ZWbjd4TGI1ZVY1?= =?utf-8?B?TGQzckNpcnB2UXFjWmU2S3V4bC8zcjUzVGFjS0t1MnBhZy9vVjg1cjQ2WW04?= =?utf-8?B?cEhpQmVNeUZtTnpuWGxIVWdxdzlnVFFuMVRFOVBwR25xOFAzSC9HSmU0dlFo?= =?utf-8?B?QjA4VDI5MDlPSUtMRkYwYnF3bFpYLzQ1NjN6L1hCNDBKRVBIU3BuQ2RSK2VL?= =?utf-8?B?cWNOMVE1ajZtWWZ1d3UxOGo3VnFGSzV4L2h5bTNySnNyTXFJRHV6YWhUYVRY?= =?utf-8?B?YTdPMUNwZmltbWRqcHo4eXNRZnA5QjZmK2VpYUZWUWp0M29zRE9kWUQ4T0Ju?= =?utf-8?B?enl4aFYyUDNEaXZ0UE9hNG1CNzFJdzdzbjdSaEdJRHlZc3lxK2xvS2hXOWQv?= =?utf-8?B?N1ExZHVsWGZ5S0dUa1gxQ1lGRWp5QWJpWDFkTXNPNXI3a3VvcysvTmJWTzFI?= =?utf-8?B?MC9BMzlwQWk2dGZ2UmU3WWhQSm0xa3BsK1NvMFNUM05tQm5kMzVUVVVOOGV4?= =?utf-8?B?N1ZnZ1g0aWRGMUxkL0c1RlluSjlmZmk1ZlM0TzFYRk15U1dvWVNyaUROa0RQ?= =?utf-8?B?TXR0VzR4MDV2Q2d5TytiTUJJQ2tnbExobWFDY2VKTzRUVCtVL3JVYllPeXBV?= =?utf-8?B?anVJUFN5c0xOQm5MemgrdE9saW00UUF5MGRjUi9ORndvZ0ViaStycjlBckl0?= =?utf-8?B?NUhpamdWbzc4MjdoSmdBNWtpMzJOajVCTUxzVnljR0h6SVB5SVlVUHRKNnJS?= =?utf-8?B?YUVpSUp0RGcvMDhwaGo2L1MybUFMMjcrbm4xaWxkS0pmaThSNmFnVTVPYWRD?= =?utf-8?B?RWEvQmZDaitSRFBiMm43WVJCZWtNc2huR3lvZC9HbFVsL1l0KzN0N3FlakJP?= =?utf-8?Q?Qc4GVzuoBlA8qVkA5IMceaE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9bcfd2f-0edf-4b6f-4eb5-08d9d03f1a37 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2022 11:32:49.2424 (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: f2SLuaAlp3GbnNCjNwVaDrev+T+BGQBc7yjFBXMeB2OnDTMDwCGt4nYBiVbJ61en9QPg55LGICOO+8M1KnFFfg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6384 X-Spam-Status: No, score=-3022.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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-List-Received-Date: Wed, 05 Jan 2022 11:32:54 -0000 Like already indicated during review of the original submission, there's really only very few insns where going through this table is easier / cheaper than using suitable macros. Utilize %XH more and introduce similar %XS and %XD (which subsequently can be used for further table size reduction). While there also switch to using oappend() in 'XH' macro processing. --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1095,8 +1095,8 @@ enum PREFIX_EVEX_0F38AA, PREFIX_EVEX_0F38AB, - PREFIX_EVEX_0F3A08_W_0, - PREFIX_EVEX_0F3A0A_W_0, + PREFIX_EVEX_0F3A08, + PREFIX_EVEX_0F3A0A, PREFIX_EVEX_0F3A26, PREFIX_EVEX_0F3A27, PREFIX_EVEX_0F3A56, @@ -1116,10 +1116,8 @@ enum PREFIX_EVEX_MAP5_51, PREFIX_EVEX_MAP5_58, PREFIX_EVEX_MAP5_59, - PREFIX_EVEX_MAP5_5A_W_0, - PREFIX_EVEX_MAP5_5A_W_1, - PREFIX_EVEX_MAP5_5B_W_0, - PREFIX_EVEX_MAP5_5B_W_1, + PREFIX_EVEX_MAP5_5A, + PREFIX_EVEX_MAP5_5B, PREFIX_EVEX_MAP5_5C, PREFIX_EVEX_MAP5_5D, PREFIX_EVEX_MAP5_5E, @@ -1129,7 +1127,7 @@ enum PREFIX_EVEX_MAP5_7A, PREFIX_EVEX_MAP5_7B, PREFIX_EVEX_MAP5_7C, - PREFIX_EVEX_MAP5_7D_W_0, + PREFIX_EVEX_MAP5_7D, PREFIX_EVEX_MAP6_13, PREFIX_EVEX_MAP6_56, @@ -1629,9 +1627,7 @@ enum EVEX_W_0F3883, EVEX_W_0F3A05, - EVEX_W_0F3A08, EVEX_W_0F3A09, - EVEX_W_0F3A0A, EVEX_W_0F3A0B, EVEX_W_0F3A18_L_n, EVEX_W_0F3A19_L_n, @@ -1648,21 +1644,8 @@ enum EVEX_W_0F3A70, EVEX_W_0F3A72, - EVEX_W_MAP5_5A, - EVEX_W_MAP5_5B, - EVEX_W_MAP5_78_P_0, - EVEX_W_MAP5_78_P_2, - EVEX_W_MAP5_79_P_0, - EVEX_W_MAP5_79_P_2, - EVEX_W_MAP5_7A_P_2, + EVEX_W_MAP5_5B_P_0, EVEX_W_MAP5_7A_P_3, - EVEX_W_MAP5_7B_P_2, - EVEX_W_MAP5_7C_P_0, - EVEX_W_MAP5_7C_P_2, - EVEX_W_MAP5_7D, - - EVEX_W_MAP6_13_P_0, - EVEX_W_MAP6_13_P_2, }; typedef void (*op_rtn) (int bytemode, int sizeflag); @@ -1723,7 +1706,9 @@ struct dis386 { "XZ" => print 'x', 'y', or 'z' if suffix_always is true or no register operands and no broadcast. "XW" => print 's', 'd' depending on the VEX.W bit (for FMA) + "XD" => print 'd' if EVEX.W=1, EVEX.W=0 is not a valid encoding "XH" => print 'h' if EVEX.W=0, EVEX.W=1 is not a valid encoding (for FP16) + "XS" => print 's' if EVEX.W=0, EVEX.W=1 is not a valid encoding "XV" => print "{vex3}" pseudo prefix "LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand, cond being false, or no operand at all in 64bit mode, or if suffix_always @@ -10480,6 +10465,23 @@ putop (const char *in_template, int size } break; case 'D': + if (len == 1) + { + switch (last[0]) + { + case 'X': + if (vex.w) + *obufp++ = 'd'; + else + oappend ("{bad}"); + break; + default: + abort (); + } + break; + } + if (len) + abort (); if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS)) break; USED_REX (REX_W); @@ -10565,13 +10567,7 @@ putop (const char *in_template, int size if (vex.w == 0) *obufp++ = 'h'; else - { - *obufp++ = '{'; - *obufp++ = 'b'; - *obufp++ = 'a'; - *obufp++ = 'd'; - *obufp++ = '}'; - } + oappend ("{bad}"); } else abort (); @@ -10735,9 +10731,13 @@ putop (const char *in_template, int size used_prefixes |= (prefixes & PREFIX_DATA); } } + break; } - else if (l == 1 && last[0] == 'L') + if (l != 1) + abort (); + switch (last[0]) { + case 'L': if (address_mode == mode_64bit && !(prefixes & PREFIX_ADDR)) { @@ -10747,9 +10747,15 @@ putop (const char *in_template, int size } goto case_S; + case 'X': + if (!vex.w) + *obufp++ = 's'; + else + oappend ("{bad}"); + break; + default: + abort (); } - else - abort (); break; case 'V': if (l == 0) --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -593,9 +593,9 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { Bad_Opcode }, /* 08 */ - { VEX_W_TABLE (EVEX_W_0F3A08) }, + { PREFIX_TABLE (PREFIX_EVEX_0F3A08) }, { VEX_W_TABLE (EVEX_W_0F3A09) }, - { VEX_W_TABLE (EVEX_W_0F3A0A) }, + { PREFIX_TABLE (PREFIX_EVEX_0F3A0A) }, { VEX_W_TABLE (EVEX_W_0F3A0B) }, { Bad_Opcode }, { Bad_Opcode }, @@ -976,8 +976,8 @@ static const struct dis386 evex_table[][ /* 58 */ { PREFIX_TABLE (PREFIX_EVEX_MAP5_58) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_59) }, - { VEX_W_TABLE (EVEX_W_MAP5_5A) }, - { VEX_W_TABLE (EVEX_W_MAP5_5B) }, + { PREFIX_TABLE (PREFIX_EVEX_MAP5_5A) }, + { PREFIX_TABLE (PREFIX_EVEX_MAP5_5B) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_5C) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_5D) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_5E) }, @@ -1015,7 +1015,7 @@ static const struct dis386 evex_table[][ { PREFIX_TABLE (PREFIX_EVEX_MAP5_7A) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_7B) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_7C) }, - { VEX_W_TABLE (EVEX_W_MAP5_7D) }, + { PREFIX_TABLE (PREFIX_EVEX_MAP5_7D) }, { "vmovw", { Edw, XMScalar }, PREFIX_DATA }, { Bad_Opcode }, /* 80 */ --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -375,17 +375,17 @@ { "vfmsub213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, 0 }, { "v4fnmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, - /* PREFIX_EVEX_0F3A08_W_0 */ + /* PREFIX_EVEX_0F3A08 */ { - { "vrndscaleph", { XM, EXxh, EXxEVexS, Ib }, 0 }, + { "vrndscalep%XH", { XM, EXxh, EXxEVexS, Ib }, 0 }, { Bad_Opcode }, - { "vrndscaleps", { XM, EXx, EXxEVexS, Ib }, 0 }, + { "vrndscalep%XS", { XM, EXx, EXxEVexS, Ib }, 0 }, }, - /* PREFIX_EVEX_0F3A0A_W_0 */ + /* PREFIX_EVEX_0F3A0A */ { - { "vrndscalesh", { XMScalar, VexScalar, EXw, EXxEVexS, Ib }, 0 }, + { "vrndscales%XH", { XMScalar, VexScalar, EXw, EXxEVexS, Ib }, 0 }, { Bad_Opcode }, - { "vrndscaless", { XMScalar, VexScalar, EXd, EXxEVexS, Ib }, 0 }, + { "vrndscales%XS", { XMScalar, VexScalar, EXd, EXxEVexS, Ib }, 0 }, }, /* PREFIX_EVEX_0F3A26 */ { @@ -482,27 +482,18 @@ { "vmulp%XH", { XM, Vex, EXxh, EXxEVexR }, 0 }, { "vmuls%XH", { XMM, VexScalar, EXw, EXxEVexR }, 0 }, }, - /* PREFIX_EVEX_MAP5_5A_W_0 */ + /* PREFIX_EVEX_MAP5_5A */ { - { "vcvtph2pd", { XM, EXxmmqdh, EXxEVexS }, 0 }, - { "vcvtsh2sd", { XMM, VexScalar, EXw, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_MAP5_5A_W_1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vcvtpd2ph%XZ", { XMM, EXx, EXxEVexR }, 0 }, - { "vcvtsd2sh", { XMM, VexScalar, EXq, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_MAP5_5B_W_0 */ - { - { "vcvtdq2ph%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, - { "vcvttph2dq", { XM, EXxmmqh, EXxEVexS }, 0 }, - { "vcvtph2dq", { XM, EXxmmqh, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_MAP5_5B_W_1 */ - { - { "vcvtqq2ph%XZ", { XMM, EXx, EXxEVexR }, 0 }, + { "vcvtp%XH2pd", { XM, EXxmmqdh, EXxEVexS }, 0 }, + { "vcvts%XH2sd", { XMM, VexScalar, EXw, EXxEVexS }, 0 }, + { "vcvtp%XD2ph%XZ", { XMM, EXx, EXxEVexR }, 0 }, + { "vcvts%XD2sh", { XMM, VexScalar, EXq, EXxEVexR }, 0 }, + }, + /* PREFIX_EVEX_MAP5_5B */ + { + { VEX_W_TABLE (EVEX_W_MAP5_5B_P_0) }, + { "vcvttp%XH2dq", { XM, EXxmmqh, EXxEVexS }, 0 }, + { "vcvtp%XH2dq", { XM, EXxmmqh, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_MAP5_5C */ { @@ -526,47 +517,47 @@ }, /* PREFIX_EVEX_MAP5_78 */ { - { VEX_W_TABLE (EVEX_W_MAP5_78_P_0) }, + { "vcvttp%XH2udq", { XM, EXxmmqh, EXxEVexS }, 0 }, { "vcvttsh2usi", { Gdq, EXw, EXxEVexS }, 0 }, - { VEX_W_TABLE (EVEX_W_MAP5_78_P_2) }, + { "vcvttp%XH2uqq", { XM, EXxmmqdh, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP5_79 */ { - { VEX_W_TABLE (EVEX_W_MAP5_79_P_0) }, + { "vcvtp%XH2udq", { XM, EXxmmqh, EXxEVexR }, 0 }, { "vcvtsh2usi", { Gdq, EXw, EXxEVexR }, 0 }, - { VEX_W_TABLE (EVEX_W_MAP5_79_P_2) }, + { "vcvtp%XH2uqq", { XM, EXxmmqdh, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_MAP5_7A */ { { Bad_Opcode }, { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_MAP5_7A_P_2) }, + { "vcvttp%XH2qq", { XM, EXxmmqdh, EXxEVexS }, 0 }, { VEX_W_TABLE (EVEX_W_MAP5_7A_P_3) }, }, /* PREFIX_EVEX_MAP5_7B */ { { Bad_Opcode }, { "vcvtusi2sh{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, - { VEX_W_TABLE (EVEX_W_MAP5_7B_P_2) }, + { "vcvtp%XH2qq", { XM, EXxmmqdh, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_MAP5_7C */ { - { VEX_W_TABLE (EVEX_W_MAP5_7C_P_0) }, + { "vcvttp%XH2uw", { XM, EXxh, EXxEVexS }, 0 }, { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_MAP5_7C_P_2) }, + { "vcvttp%XH2w", { XM, EXxh, EXxEVexS }, 0 }, }, - /* PREFIX_EVEX_MAP5_7D_W_0 */ + /* PREFIX_EVEX_MAP5_7D */ { - { "vcvtph2uw", { XM, EXxh, EXxEVexR }, 0 }, - { "vcvtw2ph", { XM, EXxh, EXxEVexR }, 0 }, - { "vcvtph2w", { XM, EXxh, EXxEVexR }, 0 }, - { "vcvtuw2ph", { XM, EXxh, EXxEVexR }, 0 }, + { "vcvtp%XH2uw", { XM, EXxh, EXxEVexR }, 0 }, + { "vcvtw2p%XH", { XM, EXxh, EXxEVexR }, 0 }, + { "vcvtp%XH2w", { XM, EXxh, EXxEVexR }, 0 }, + { "vcvtuw2p%XH", { XM, EXxh, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_MAP6_13 */ { - { VEX_W_TABLE (EVEX_W_MAP6_13_P_0) }, + { "vcvts%XH2ss", { XMM, VexScalar, EXw, EXxEVexS }, 0 }, { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_MAP6_13_P_2) }, + { "vcvtp%XH2psx", { XM, EXxmmqh, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP6_56 */ { --- a/opcodes/i386-dis-evex-w.h +++ b/opcodes/i386-dis-evex-w.h @@ -550,19 +550,11 @@ { Bad_Opcode }, { "vpermilpd", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F3A08 */ - { - { PREFIX_TABLE (PREFIX_EVEX_0F3A08_W_0) }, - }, /* EVEX_W_0F3A09 */ { { Bad_Opcode }, { "vrndscalepd", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F3A0A */ - { - { PREFIX_TABLE (PREFIX_EVEX_0F3A0A_W_0) }, - }, /* EVEX_W_0F3A0B */ { { Bad_Opcode }, @@ -636,62 +628,13 @@ { Bad_Opcode }, { "vpshrdw", { XM, Vex, EXx, Ib }, 0 }, }, - /* EVEX_W_MAP5_5A */ - { - { PREFIX_TABLE (PREFIX_EVEX_MAP5_5A_W_0) }, - { PREFIX_TABLE (PREFIX_EVEX_MAP5_5A_W_1) }, - }, - /* EVEX_W_MAP5_5B */ - { - { PREFIX_TABLE (PREFIX_EVEX_MAP5_5B_W_0) }, - { PREFIX_TABLE (PREFIX_EVEX_MAP5_5B_W_1) }, - }, - /* EVEX_W_MAP5_78_P_0 */ - { - { "vcvttph2udq", { XM, EXxmmqh, EXxEVexS }, 0 }, - }, - /* EVEX_W_MAP5_78_P_2 */ - { - { "vcvttph2uqq", { XM, EXxmmqdh, EXxEVexS }, 0 }, - }, - /* EVEX_W_MAP5_79_P_0 */ - { - { "vcvtph2udq", { XM, EXxmmqh, EXxEVexR }, 0 }, - }, - /* EVEX_W_MAP5_79_P_2 */ + /* EVEX_W_MAP5_5B_P_0 */ { - { "vcvtph2uqq", { XM, EXxmmqdh, EXxEVexR }, 0 }, - }, - /* EVEX_W_MAP5_7A_P_2 */ - { - { "vcvttph2qq", { XM, EXxmmqdh, EXxEVexS }, 0 }, + { "vcvtdq2ph%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, + { "vcvtqq2ph%XZ", { XMM, EXx, EXxEVexR }, 0 }, }, /* EVEX_W_MAP5_7A_P_3 */ { { "vcvtudq2ph%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, { "vcvtuqq2ph%XZ", { XMM, EXx, EXxEVexR }, 0 }, }, - /* EVEX_W_MAP5_7B_P_2 */ - { - { "vcvtph2qq", { XM, EXxmmqdh, EXxEVexR }, 0 }, - }, - /* EVEX_W_MAP5_7C_P_0 */ - { - { "vcvttph2uw", { XM, EXxh, EXxEVexS }, 0 }, - }, - /* EVEX_W_MAP5_7C_P_2 */ - { - { "vcvttph2w", { XM, EXxh, EXxEVexS }, 0 }, - }, - /* EVEX_W_MAP5_7D */ - { - { PREFIX_TABLE (PREFIX_EVEX_MAP5_7D_W_0) }, - }, - /* EVEX_W_MAP6_13_P_0 */ - { - { "vcvtsh2ss", { XMM, VexScalar, EXw, EXxEVexS }, 0 }, - }, - /* EVEX_W_MAP6_13_P_2 */ - { - { "vcvtph2psx", { XM, EXxmmqh, EXxEVexS }, 0 }, - },