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 C57613899001 for ; Wed, 21 Jul 2021 10:23:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C57613899001 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2054.outbound.protection.outlook.com [104.47.14.54]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-29-w1cnMg7rP4qpFdD3YGVZYg-1; Wed, 21 Jul 2021 12:23:20 +0200 X-MC-Unique: w1cnMg7rP4qpFdD3YGVZYg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mluGQENQ0cPu5ngWVUYNG1xy21HSxlJIQzqzYFknvnV/ZYvG7sF8pAPOtICQbImqZC+GGPMwCj+froGIXia41ViFlljLEs0Os+fxP2shiOm8jzZNm7vQ93sSvg0DRMvfn6zSB/ftFjf40ijgmV5zuXE/B/6kzRUbX+jlNIKR7QuqcnYrE8WYjQekJJ+OV6UFCAocMvm2i0MTLjP2sHVZeGNJZK6TO7fes4B7h/ZTKri12ixK2crmE5nv3BICdoyYQKjo86R1WvzFguVOdPnefH8JeyxlufnTud2ZwPOMGo6fHiRctau0HeOLPHkwoixh3tSob3kneKwXMNeYNJr7Fw== 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-SenderADCheck; bh=roWfOUzqmVKpmGNJCIG9oKdHhXtaZ7R97RiCIozD4GE=; b=nxiyda+nb/mV4P+kgK7k6zPfQO02a5CPO74PtSt73RvL8vmrfiDxc8q7xMWDY2LmojGNBtoovpHcIKjB8eUG0D11bOAXHZXzcb1HEAax3zfTTWvOAGsKPR3U4B48/kCT4b86cXOHSYGsebDEybeaCK53iCaASYdfaoj8Q18duh7t3++UCR5fXiY7GWJS+eH38co9frBvTWgH+4QZ0ntHXLlZ4yGhHeu/07mQ4F+yrXaDnXDWduIGSQEbJUJ5SNcFiQr8HVFaqXz2PzSlCW5pIS5Kt8ENwcu7qHYVlPTU2mC+LABCVveAftCA4B3O78iTygWBOaesDV4IEAA6ZRaGhQ== 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 VI1PR04MB5165.eurprd04.prod.outlook.com (2603:10a6:803:54::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.23; Wed, 21 Jul 2021 10:23:19 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::99d3:99cd:8adf:3eea]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::99d3:99cd:8adf:3eea%5]) with mapi id 15.20.4331.034; Wed, 21 Jul 2021 10:23:19 +0000 Subject: [PATCH 11/12] x86: drop vex_scalar_w_dq_mode To: Binutils References: <286bff10-f2d7-e1f5-e171-17565a143ced@suse.com> From: Jan Beulich Message-ID: Date: Wed, 21 Jul 2021 12:23:17 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 In-Reply-To: <286bff10-f2d7-e1f5-e171-17565a143ced@suse.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR0P281CA0057.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::14) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [10.156.60.236] (37.24.206.209) by FR0P281CA0057.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.7 via Frontend Transport; Wed, 21 Jul 2021 10:23:19 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0d775519-6346-4a8e-8a51-08d94c318f7b X-MS-TrafficTypeDiagnostic: VI1PR04MB5165: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j24TVDbrXY947ad6NjfDAy2/v5x/amlgekqnms6H1GWY884MwR9/w80Te45pAlCcw1ylJKGK28DWbrzEvKCrYLo8IPwIv4wuzxd0ni1YGJviNqs7lAC9OubsoDV2bhWRhamgGCRckZrZP45AE+J3T+78JsPXW6L/i2K3Sn5/LpYPkYO0AfPqFBYUnfuwd5oDuyyeooAH4KoDffBNyYojEH3nPmlJWi21O5Y5pAibniktDwHuZoqFtxRaIxZjRKCHDNxz0GBlfkfytMR3Kbr0CjfLtobzvFmUovwevIANoQB09M3aLQflVlp5KGlZNfb5HQqRLYGbQ4owfm0aVXYimuq3ipg714ikym8HH2WDjJDDn1GYCol3H3jBBzZ0aCOGCsoWOR+DX8mBPhDNuklXIslB6MLAQlCbQ+2urrWAO1uR+mWluEUk9PdmoRILv9F+WbPt/JeMYXSL7LTi5Z4pD9UOwOVKgCasj8Qx3cAAYN5wTEJPe+TiHIvGf1FN3Tl0RJZ8brGlRHtkyeboH27tB0ABKSJBfPQdOLFAWX5ZKQrOtKfgQdvaaqnGhBONR1KUAG6JuTzfCCVNKvDNbP0GkeodHcF5S9Y5pyz9dIYG6XW2rKPxT00i69TWDe3Jv/08Su2e2L2w87p5Fg+CyH9XbKripGYooDN+qOZK431mKdKicodPqOXYQlTL2HjsB0nzS54KQR3C+ItUrT6nrRd9rqCIJ/DpEqSihHHs4PKNTTw= 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:(376002)(366004)(346002)(136003)(396003)(39850400004)(186003)(316002)(4326008)(6916009)(2906002)(8936002)(6486002)(31686004)(16576012)(36756003)(30864003)(38100700002)(66476007)(31696002)(66556008)(5660300002)(86362001)(66946007)(26005)(8676002)(2616005)(478600001)(956004)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZGUxcXJkOVhFVk5BMENDN2d0TGJQU0diT0hMOW1wS3lXekY0SWpla3pNYW9k?= =?utf-8?B?SC9FLzRrQitIUUxJaElUS3EvcGpvTTIrL1RqbjJoVzRZUml3UmhuMTlkN2VO?= =?utf-8?B?SlM3SEhWME84OEx4MVNtNTRxOWthRDhoUHB2RmpvTWpyaGxUcG93U0VJRnhG?= =?utf-8?B?VEpIeDdrQ0dNZElzZ0lYbHlRNHZMOENQVTM1V1ZadGxTYVBkcksyRThwaVVz?= =?utf-8?B?TTl6RlZZOFR4MzNGcEo4UGM2LzQ4bjROOVJwdVF6dWNRNXFZQzBDTlo5emF4?= =?utf-8?B?VHdKUTVrTVpPdGYvTUI1RjYzVmRFbEhndWZZd3Z3czdiemc3bDE3SWVsZ0d4?= =?utf-8?B?bllLcnJUNzA2ejdrdk82RGRGZ1lIVnFEcWp2cXJpOVFoenNIOFVZNWdTRXcz?= =?utf-8?B?aHZUQXBjcXJSZU9ZRE9ac0IyRnk4d1B0cmh4TXA1RXNNNUF6ZkJta0dCTWlo?= =?utf-8?B?NWxXUDB6Si9jYUN0NWhqd1lNNW9MK3kyVjVDQVE2T1hISTN6WVBlQmMyMXYx?= =?utf-8?B?YTRhckdZVFc3Ujc2TDNtVzg4WlZxem1ZbW1ZWG1kaU5Fd0lTYjVYRXhrMmt4?= =?utf-8?B?QXFYNWJjR1A0amRGMjhUSG01RjBzcElxbEQ1Y2FlSmIvRkJQZE5tRkhwTWFo?= =?utf-8?B?NXVSaWtCd1EzTGhuNk1EbURDR0xHVDBkUjNkZzYybnNSUkVMNkxmUTl2VElF?= =?utf-8?B?SlhOU3NnbkEvb2NpTnlyWXdrdlNZY2o4RCtZVEFLYWhhcTBLOEJDMHE5UDNW?= =?utf-8?B?UE1STzVWNWlXSFRUcFAvRXNhdU11akd4YjBXU3JWSy85SXlVNGx1TGxNVE5G?= =?utf-8?B?RG1hbUhJYTBEZ1lmb2YxN1RWMDU0U0lMV3ZIY1ZaNWcvY3VyYU14cDg0Titv?= =?utf-8?B?dlFWa3JQZ0Y5NHlNaUthQnJpYitmakdJYjlTUWZ0R0FKamZuR3hhdTB6Q0Np?= =?utf-8?B?UjNNYS9LdjFsWW1rSzRMenFuODV2YU1tMlZaRmphSzgzV0xXcVIvaS9NVm5k?= =?utf-8?B?TUMwUmdGcXA4eFVaek1GUVNRaW5zcEZ3SE1hbDlLVkFMNUc0VS84UTMrZDFx?= =?utf-8?B?Ykx4czdFcWU1QW1odHIrajNRM0prU1VOYzU5TVBSUTRHQ2tmdlhDcjRCbDRo?= =?utf-8?B?WENrV3lDZVpEZHlTR1lQc0pxUzBOdnBqL1crcE9CRVpvc1JBQ1JOSEp0QU9o?= =?utf-8?B?NlVjTHJsdkg5OFJsdWRSUmd2Z2J0SE8rSDZZd2UwbnNYek5kRjRVTWlnTVlN?= =?utf-8?B?MnB3WUF0bHl4aWVzbkVRS1lJMm5JbUl6RFRXQ3E1Sm5LczNlOFV6RHgvRmlx?= =?utf-8?B?azcyaUNkMmlld3dEUHVqbWViSkdDMkY4QU5aS0o3VGlrTjk2UnJFbnF4U1do?= =?utf-8?B?b25tWUlzdDNTeTBlV0ViRWhvZ3QycWN4NkpHQmRad2JWSklydHQxNkNtMUp0?= =?utf-8?B?T3R5QVRLbDJjdHJ1dDBBWkxOUUVZbTNxZkJYYVVMcllEMzhsLzVjZGNpcFRG?= =?utf-8?B?ejduN0RyWlAwME5aYUpHdlBMVEFmV3FlWXNUMlR6TFV2TTdEamZhbVpnRDEz?= =?utf-8?B?WS9mYTJUc3h1Ym9OVXpMc1hXV1E3MkttKy9Pb0JRd043NW05dXMxaUI5clFD?= =?utf-8?B?K0Y0eFNURDNHcG1FWjF3NXd3ek44dHNZTVEydXZ4am1BSE0xZWRlV3VnbGc4?= =?utf-8?B?SEg0UjFzdW1NZ1hvaTVjM3JIa0s2NHIxdnJHU1BQZkEwZzZSUTgzdk1jWWxr?= =?utf-8?Q?JYDniVaFMi1P8IQRTtFYY7bPigk7hflgH4dt2hw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d775519-6346-4a8e-8a51-08d94c318f7b X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2021 10:23:19.4962 (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: zU3ckjAE7p9dxXEQi2iOAQUKvl7UFdw24EPkJ7XAPt6F+/g1TCzsB1IW/PXNIbT9QUqhAjT1PWp1f+xMzFjHPg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5165 X-Spam-Status: No, score=-3031.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP 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, 21 Jul 2021 10:23:25 -0000 It has only a single use and can easily be represented by dq_mode instead. Plus its handling in intel_operand_size() was duplicating that of vex_vsib_{d,q}_w_dq_mode anyway. --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -358,7 +358,7 @@ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, + { "vfmsub132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, 0 }, { "v4fmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, /* PREFIX_EVEX_0F38AA */ @@ -372,6 +372,6 @@ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, + { "vfmsub213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, 0 }, { "v4fnmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -343,7 +343,7 @@ static const struct dis386 evex_table[][ { PREFIX_TABLE (PREFIX_EVEX_0F382A) }, { VEX_W_TABLE (EVEX_W_0F382B) }, { "vscalefp%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vscalefs%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vscalefs%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ @@ -368,7 +368,7 @@ static const struct dis386 evex_table[][ { "vpmull%DQ", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, { "vgetexpp%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, - { "vgetexps%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA }, + { "vgetexps%XW", { XMScalar, VexScalar, EXdq, EXxEVexS }, PREFIX_DATA }, { "vplzcnt%DQ", { XM, EXx }, PREFIX_DATA }, { "vpsrlv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, { "vpsrav%DQ", { XM, Vex, EXx }, PREFIX_DATA }, @@ -379,9 +379,9 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { Bad_Opcode }, { "vrcp14p%XW", { XM, EXx }, PREFIX_DATA }, - { "vrcp14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vrcp14s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vrsqrt14p%XW", { XM, EXx }, 0 }, - { "vrsqrt14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vrsqrt14s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, /* 50 */ { "vpdpbusd", { XM, Vex, EXx }, PREFIX_DATA }, { "vpdpbusds", { XM, Vex, EXx }, PREFIX_DATA }, @@ -465,13 +465,13 @@ static const struct dis386 evex_table[][ { "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, /* 98 */ { "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfmadd132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F389A) }, { PREFIX_TABLE (PREFIX_EVEX_0F389B) }, { "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmadd132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub132s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, /* A0 */ { "vpscatterd%DQ", { MVexVSIBDWpX, XM }, PREFIX_DATA }, { "vpscatterq%DQ", { MVexVSIBQWpX, XMGatherQ }, PREFIX_DATA }, @@ -483,13 +483,13 @@ static const struct dis386 evex_table[][ { "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, /* A8 */ { "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfmadd213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F38AA) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AB) }, { "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmadd213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub213s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, /* B0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -501,13 +501,13 @@ static const struct dis386 evex_table[][ { "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, /* B8 */ { "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfmadd231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfmsub231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmadd231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, - { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub231s%XW", { XMScalar, VexScalar, EXdq, EXxEVexR }, PREFIX_DATA }, /* C0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -521,9 +521,9 @@ static const struct dis386 evex_table[][ { "vexp2p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, { Bad_Opcode }, { "vrcp28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, - { "vrcp28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA }, + { "vrcp28s%XW", { XMScalar, VexScalar, EXdq, EXxEVexS }, PREFIX_DATA }, { "vrsqrt28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, - { "vrsqrt28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA }, + { "vrsqrt28s%XW", { XMScalar, VexScalar, EXdq, EXxEVexS }, PREFIX_DATA }, { Bad_Opcode }, { VEX_W_TABLE (VEX_W_0F38CF) }, /* D0 */ @@ -627,7 +627,7 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { "vpternlog%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA }, { "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA }, - { "vgetmants%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, + { "vgetmants%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, @@ -675,13 +675,13 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, /* 50 */ { "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, - { "vranges%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, + { "vranges%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, - { "vfixupimms%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, + { "vfixupimms%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, { "vreducep%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA }, - { "vreduces%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, + { "vreduces%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, @@ -699,7 +699,7 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { Bad_Opcode }, { "vfpclassp%XW%XZ", { MaskG, EXx, Ib }, PREFIX_DATA }, - { "vfpclasss%XW", { MaskG, EXVexWdqScalar, Ib }, PREFIX_DATA }, + { "vfpclasss%XW", { MaskG, EXdq, Ib }, PREFIX_DATA }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -358,6 +358,7 @@ fetch_data (struct disassemble_info *inf #define EXdS { OP_EX, d_swap_mode } #define EXq { OP_EX, q_mode } #define EXqS { OP_EX, q_swap_mode } +#define EXdq { OP_EX, dq_mode } #define EXx { OP_EX, x_mode } #define EXxS { OP_EX, x_swap_mode } #define EXxmm { OP_EX, xmm_mode } @@ -368,7 +369,6 @@ fetch_data (struct disassemble_info *inf #define EXxmmdw { OP_EX, xmmdw_mode } #define EXxmmqd { OP_EX, xmmqd_mode } #define EXymmq { OP_EX, ymmq_mode } -#define EXVexWdqScalar { OP_EX, vex_scalar_w_dq_mode } #define EXEvexXGscat { OP_EX, evex_x_gscat_mode } #define EXEvexXNoBcst { OP_EX, evex_x_nobcst_mode } #define MS { OP_MS, v_mode } @@ -507,7 +507,7 @@ enum v_bnd_mode, /* like v_bnd_mode in 32bit, no RIP-rel in 64bit mode. */ v_bndmk_mode, - /* operand size depends on REX prefixes. */ + /* operand size depends on REX.W / VEX.W. */ dq_mode, /* registers like dq_mode, memory like w_mode, displacements like v_mode without considering Intel64 ISA. */ @@ -545,8 +545,6 @@ enum /* scalar, ignore vector length. */ scalar_mode, - /* Operand size depends on the VEX.W bit, ignore vector length. */ - vex_scalar_w_dq_mode, /* Static rounding. */ evex_rounding_mode, @@ -6300,13 +6298,13 @@ static const struct dis386 vex_table[][2 { "vfmsubadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* 98 */ { "vfmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmadd132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmsub132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfnmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmadd132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfnmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmsub132s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -6318,13 +6316,13 @@ static const struct dis386 vex_table[][2 { "vfmsubadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* a8 */ { "vfmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmadd213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmsub213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfnmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmadd213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfnmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmsub213s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -6336,13 +6334,13 @@ static const struct dis386 vex_table[][2 { "vfmsubadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* b8 */ { "vfmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmadd231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmsub231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfnmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmadd231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vfnmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, - { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmsub231s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -11170,15 +11168,6 @@ intel_operand_size (int bytemode, int si case o_mode: oappend ("OWORD PTR "); break; - case vex_scalar_w_dq_mode: - if (!need_vex) - abort (); - - if (vex.w) - oappend ("QWORD PTR "); - else - oappend ("DWORD PTR "); - break; case vex_vsib_d_w_dq_mode: case vex_vsib_q_w_dq_mode: if (!need_vex) @@ -11371,7 +11360,6 @@ OP_E_memory (int bytemode, int sizeflag) break; } /* fall through */ - case vex_scalar_w_dq_mode: case vex_vsib_d_w_dq_mode: case vex_vsib_q_w_dq_mode: case evex_x_gscat_mode: @@ -12496,8 +12484,7 @@ print_vector_reg (unsigned int reg, int && bytemode != b_mode && bytemode != w_mode && bytemode != d_mode - && bytemode != q_mode - && bytemode != vex_scalar_w_dq_mode) + && bytemode != q_mode) { switch (vex.length) { @@ -12627,6 +12614,9 @@ OP_EX (int bytemode, int sizeflag) MODRM_CHECK; codep++; + if (bytemode == dq_mode) + bytemode = vex.w ? q_mode : d_mode; + if (modrm.mod != 3) { OP_E_memory (bytemode, sizeflag);