From patchwork Fri Feb 3 07:46:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 52370 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp698915wrn; Thu, 2 Feb 2023 23:47:59 -0800 (PST) X-Google-Smtp-Source: AK7set+AYeurUb8Tw4K2qSKwmY2WoRCASiN8K7TUgL/stukJEF9viuk6i/Y6Kif5O06liCq6DN75 X-Received: by 2002:a17:907:2087:b0:87b:d594:5d38 with SMTP id pv7-20020a170907208700b0087bd5945d38mr8774757ejb.53.1675410479463; Thu, 02 Feb 2023 23:47:59 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id y14-20020a17090668ce00b007ae127c6c80si2448144ejr.672.2023.02.02.23.47.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Feb 2023 23:47:59 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=WiWNg07A; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 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 23C19385B52A for ; Fri, 3 Feb 2023 07:47:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 23C19385B52A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675410452; bh=IrOU3IzWrGWIeZBpILLBhZjQsrdl2+24yMw6H/sG2tc=; 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=WiWNg07ATFEA5mCzYFYGKapLBU0fh0L3S3IbMrcpNSpCk2qlqGkxRTHc03N2AYJDf 652daOD2jAVf7C0oQd9M2n2JfT2cRAMNQ1zJyQ3KjfnDjzncIpgCAHktJPo4NWbnVj JImva6lRsN1mX7/6oEbTsTuejTo/fhnJ62v0Mmrw= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2067.outbound.protection.outlook.com [40.107.21.67]) by sourceware.org (Postfix) with ESMTPS id 6C73F3857C45 for ; Fri, 3 Feb 2023 07:46:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6C73F3857C45 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kx18v44EZmjLqeL1qPQdlvQ+3dpXbDzaWyke7ERrOVbjU2s/j/K+1lyu7OjljYfwj6nt34KHl0ay+kbyYGid/CtqY4x9g5D4OzErqv4pfCdU2f78oggLWaEAQqT4YOsedz5OBZVOe8UFzw+rnxw/1beUlNSStq3ihXp6EnqyV/aiVlFtQFOxrTO0V6rWa4BCwxAlOaYiLdAxvsHi/iCQ+6U7xN6Rn/zVcKnlnHKHGFSpGeXrs9uMPNNMDkcFpo7buFsoRL6DCzNMhqkuSGUBih5lU8fJYCDQfi6skLEegBFc9EzvoHMqgHtleejcQydNnbRd/JXt4q7GNaapXAXYtQ== 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=IrOU3IzWrGWIeZBpILLBhZjQsrdl2+24yMw6H/sG2tc=; b=gGc1Up8mZlZYwMW0pey3ErEowGvRlpL5BnFq9UIXxPgIvd5DK6DiTB4DYGoVyCaREZ0e6mWL2s9teim4wkzBcpOvtZ9KeRH82S+vFC3tcRZIm5IJsFQ53qDy5rJn62i0YxMgGQ0OaNpQeLwcI0syvguyfFbdL93rzkxmd0l7qeMNMgPomS83MAtDoWCK/anzDjB11VuUpa9w47jBGZWFQy9jb0/XM4Ki5PlyUVRj3iU+zupUOErvneLSukw4WBkSqf8jciSA1gft0lGuN6vsFaHOH0zeUBWboi5Qtu2TroStTGvKkVCj3n5SxVpplhZ9D44MRDLYD2DMi9byIb/HUw== 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 VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by PAXPR04MB8349.eurprd04.prod.outlook.com (2603:10a6:102:1bd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.31; Fri, 3 Feb 2023 07:46:47 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178%6]) with mapi id 15.20.6064.024; Fri, 3 Feb 2023 07:46:46 +0000 Message-ID: <1364c0e8-5e91-4a92-c14c-072b2a1edf6d@suse.com> Date: Fri, 3 Feb 2023 08:46:45 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: [PATCH 3/3] x86: drop use of VEX3SOURCES Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR2P281CA0137.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9e::12) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PAXPR04MB8349:EE_ X-MS-Office365-Filtering-Correlation-Id: 42523747-b813-4f7c-8a9f-08db05bacd26 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oU2wDgnzpfyJi8pYlDbXwIhkjt0XoPB+KoVl1BolRXsgd1LbKhVxXjZt5DIz79PNDZPOmsWsb5AxPRCqeqBlBs4NVs/iquzUXB2b0pjzXv6aUaBzkYYSDxIW93V4dRcBXrSZ9nHUB35yZbV/JTV1r9qXkIwdKuKwRfQ8uDrBuF8kiujoofIyQzlW9x1HoKyGPWqYmE5CtNdKkM753fkP15eqcYkrfAr4uqwM2t2ioxq4/pHLPnVUYBNlzlZ5sRKzZbDwPu2v1D4f7/pBkt/M9ijT4j5/iSjaESR62RX/CYfW2sHf98mAQqweq8oXxy9PvbIvcav1m7dCaXv1YNRuDQmGiMVgNlwAdLFhWJKPk3X2sUmLCFjeKm1CyggRhlHSUj9Vj8lQ5tL5T/LsDqkEhqftk3awQ6dgGWeQZnPO5rzNIsO7ckeCnVVvc/ZCDMlW9z0436u9l4po8LjsDFZKKuG3PXzEcacWgqwpqjQ/uFyvmlwbZZPiJEl6MMYU6IMsmoXlQr8NU9FcjtbBf7450yTY1p6YSMELkwEH3AxzCBgkTj1eYyCjtuIOmZT2ctL7fDs9z8S4zK47/F7uDe9GOM/nipceUZD6d77upUN5sOuKZokP3Vm8AJtL/XFYYfGIGM893HpNX4wfYGryrkvaQTRdWrjWsfHOJboE5d15gfQ1GeG1AJ9NF+413NTxY+xevrByR/zi/UjHGZMxrzXUdKJFSMIBBRcg1BqB4C25LcL8idlqxDSExFMc86XwU9l+ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR04MB6560.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(376002)(39860400002)(396003)(136003)(346002)(366004)(451199018)(41300700001)(6916009)(4326008)(66946007)(66556008)(8676002)(66476007)(31696002)(86362001)(2906002)(2616005)(8936002)(6506007)(5660300002)(186003)(26005)(6512007)(30864003)(38100700002)(36756003)(6486002)(478600001)(316002)(31686004)(32563001)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?aewfneuewInq1qlqxpxw56CF3vdr?= =?utf-8?q?G3BVQjFsiofzVCndo/7DE9FuKgxs0Sq+JQlcJyptq00ydSwtTt8kDe6h3H+hwXIXU?= =?utf-8?q?jaqSeKaxi9YycCM/kmhRewEFiH+mAac85FX4qZGJ1SjbyHkLlbqF3bmepUZXYk6R9?= =?utf-8?q?F4l3induGMlRhsz3kwKLD1lPXxRvly/mAG2C+oePMImG5cCHwT1dVis1LBprllBeb?= =?utf-8?q?o+p5Kc7ZNKU1kpKh6adYX3lEMdDzCOfNIe5pHbmLi9zIVttZ2LVCHT94eaJQX6rGK?= =?utf-8?q?Evsp6ZGEURNx5LJR7M0fluT9huaQSCcFl5Xa8JB/jIsn71gOm9zOFKNJKtINqc2yh?= =?utf-8?q?9lLRpo+aMQXJl4Bpux6kohQUPy/AOkq5FQwnvsIPtVgWt3CSCzLdsJntw7u51yu2j?= =?utf-8?q?1GwdvD1G+kjCWglh42moIf5pUSQP/oLLbTBQcarzZh0uPQqGGbSXHw3mB4TRvEHXV?= =?utf-8?q?3yS3s1Ero35qkLXt1ilq9izWWwC/qgrVZRZM+om0q1fBGME/FABNE0IU1uMnnmzcX?= =?utf-8?q?xXKq4RSJ1V/uWKrrQTphlIkVx1cMee0JHTbEv61Cu9Oa69Ck1yVKPeJ9WxllB+vNZ?= =?utf-8?q?EDfdSinXgcXGfzTuiIZLbPg94uSmz9oYbpKmCzw3mWgfA/66HfB6rrqhitUaPNGKJ?= =?utf-8?q?dy1yRuCmWnMq4C/5yCwh+0mpGx0glljMNo8p4qYIk/gR2gaiQHZHJuRRZZBUJaquj?= =?utf-8?q?heopRKjT+C7ti0QesAMuUV1bH5TVRKXDx3OhBVWDy5lO6WrH4q9cjYhDHjqb1tct4?= =?utf-8?q?8NrFSdkx78++uc5Q8De+q6UGZmVWzoyhkfCiFuCy1x0lydNF8Sk510IjcfZNXM3vS?= =?utf-8?q?rX15OQNMUMrRmxCQpAv4QG0ae1AtQ+Ohp2lJsi5eVq+bxTcr3rf63sRGT1UJWe4VS?= =?utf-8?q?j/rC/oehDyQyMs8vgbSkEFBSAPxA45D3AAXsWCl+4cChwntBsIrSa6ebgojXTqeOn?= =?utf-8?q?8AIpyDK+4WLsK/u7G2Z1L2ObAfTJ9Uj8F9BkcyamSskb6jADuDCD8Hmw6Ty+3a77F?= =?utf-8?q?I9Yc5JvxPjTlxFDYcRnj8zuJaMyBsLjJi0Yxz8Vlm6d431ORFJPLYnlV1FUL7d1t5?= =?utf-8?q?in5HjXKbuu9Gp7d03s+XKuLspw2WZou9raZBmWdfRL12RtWYXe77xKlMCLD6whgyI?= =?utf-8?q?p+L6GvHQ/t17N5UnioCTeO+k9TlhWtuDj0OlzMlnkcTDepwHcI7PKUVNHNr4hBE9G?= =?utf-8?q?L1mNE/JlnY+T1FitAXiN6/m0yW3qUhs7ImbiLoA8PTGN3QI6H26UCf3XC8LLn+dOJ?= =?utf-8?q?DZz3eRM05O2Ecu2nuVdfhkCMEOsdswW3W/Vy5tU5X/xxcEFEnliW7D9HcJDBTgHip?= =?utf-8?q?gK+7ruDtxChfRC6ocHipZNnmW7bnLRPwxbugO+F8hhl9LkURY7R3Zf8CooHUJ/JA3?= =?utf-8?q?Lq4zmfQfrLEuzxS9Qme7lh3wBcWWPW9052+LxCUZCTLuXNYXxEx5lvuStvSljpm/I?= =?utf-8?q?HUcfnI2WimhfrSLExtCqyVQDHkmJJsvgfE65erBPc2XNCLJUxg4CGlqMGo/ICbMwK?= =?utf-8?q?ioGv5yfSDLLn?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 42523747-b813-4f7c-8a9f-08db05bacd26 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2023 07:46:46.8530 (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: pRRe2ZXTSSnDzhZXTJbn4ggkigy+ACu2lsCbT+emIjvPS8+kBu4axfkvKf8MhiesnS9pbg1R2hiVHKs0DLOh5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8349 X-Spam-Status: No, score=-3028.5 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 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?1756795218674080542?= X-GMAIL-MSGID: =?utf-8?q?1756795218674080542?= The attribute really specifies that the sum of register and memory operands is 4. Express it like that in most places, while using the 2nd (apart from XOP) CPU feature flags (FMA4) in reversed operand matching logic. With the use in build_modrm_byte() gone, part of an assertion there also becomes meaningless - simplify that at the same time. With all uses of the opcode modifier field gone, also drop that. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2135,16 +2135,15 @@ operand_size_match (const insn_template return match; /* Check reverse. */ - gas_assert ((i.operands >= 2 && i.operands <= 3) - || t->opcode_modifier.vexsources); + gas_assert (i.operands >= 2); for (j = 0; j < i.operands; j++) { unsigned int given = i.operands - j - 1; - /* For 4-operand and XOP insns VEX.W controls just the first two + /* For FMA4 and XOP insns VEX.W controls just the first two register operands. */ - if (t->opcode_modifier.vexsources || t->cpu_flags.bitfield.cpuxop) + if (t->cpu_flags.bitfield.cpufma4 || t->cpu_flags.bitfield.cpuxop) given = j < 2 ? 1 - j : j; if (t->operand_types[j].bitfield.class == Reg @@ -4665,7 +4664,7 @@ load_insn_p (void) /* Check fake imm8 operand and 3 source operands. */ if ((i.tm.opcode_modifier.immext - || i.tm.opcode_modifier.vexsources == VEX3SOURCES) + || i.reg_operands + i.mem_operands == 4) && i.types[dest].bitfield.imm8) dest--; @@ -6933,7 +6932,7 @@ match_template (char mnem_suffix) if (!(size_match & MATCH_REVERSE)) continue; /* Try reversing direction of operands. */ - j = t->opcode_modifier.vexsources + j = t->cpu_flags.bitfield.cpufma4 || t->cpu_flags.bitfield.cpuxop ? 1 : i.operands - 1; overlap0 = operand_type_and (i.types[0], operand_types[j]); overlap1 = operand_type_and (i.types[j], operand_types[0]); @@ -6968,7 +6967,7 @@ match_template (char mnem_suffix) && (intel_syntax || intel_mnemonic)) found_reverse_match |= Opcode_FloatR; } - else if (t->opcode_modifier.vexsources + else if (t->cpu_flags.bitfield.cpufma4 || t->cpu_flags.bitfield.cpuxop) { found_reverse_match = Opcode_VexW; @@ -7930,7 +7929,6 @@ process_operands (void) if (i.tm.operand_types[0].bitfield.instance == Accum && i.tm.operand_types[0].bitfield.xmmword) { - gas_assert (i.tm.opcode_modifier.vexsources == VEX3SOURCES); /* Keep xmm0 for instructions with VEX prefix and 3 sources. */ i.tm.operand_types[0].bitfield.instance = InstanceNone; @@ -7941,9 +7939,7 @@ process_operands (void) if (i.tm.opcode_modifier.operandconstraint == IMPLICIT_1ST_XMM0) { - gas_assert ((MAX_OPERANDS - 1) > dupl - && (i.tm.opcode_modifier.vexsources - == VEX3SOURCES)); + gas_assert ((MAX_OPERANDS - 1) > dupl); /* Add the implicit xmm0 for instructions with VEX prefix and 3 sources. */ @@ -8168,9 +8164,8 @@ build_modrm_byte (void) { const reg_entry *default_seg = NULL; unsigned int source, dest; - int vex_3_sources; + bool vex_3_sources = (i.reg_operands + i.mem_operands == 4); - vex_3_sources = i.tm.opcode_modifier.vexsources == VEX3SOURCES; if (vex_3_sources) { unsigned int nds, reg_slot; @@ -8186,9 +8181,7 @@ build_modrm_byte (void) ZMM register. 2. 4 operands: 4 register operands or 3 register operands plus 1 memory operand, with VexXDS. */ - gas_assert ((i.reg_operands == 4 - || (i.reg_operands == 3 && i.mem_operands == 1)) - && i.tm.opcode_modifier.vexvvvv == VEXXDS + gas_assert (i.tm.opcode_modifier.vexvvvv == VEXXDS && i.tm.opcode_modifier.vexw && i.tm.operand_types[dest].bitfield.class == RegSIMD); --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -431,7 +431,6 @@ static bitfield opcode_modifiers[] = BITFIELD (VexVVVV), BITFIELD (VexW), BITFIELD (OpcodePrefix), - BITFIELD (VexSources), BITFIELD (SIB), BITFIELD (SSE2AVX), BITFIELD (EVex), --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -617,12 +617,6 @@ enum #define PREFIX_0XF3 2 #define PREFIX_0XF2 3 OpcodePrefix, - /* number of VEX source operands: - 0: <= 2 source operands. - 2: 3 source operands. - */ -#define VEX3SOURCES 2 - VexSources, /* Instruction with a mandatory SIB byte: 1: 128bit vector register. 2: 256bit vector register. @@ -736,7 +730,6 @@ typedef struct i386_opcode_modifier unsigned int vexvvvv:2; unsigned int vexw:2; unsigned int opcodeprefix:2; - unsigned int vexsources:2; unsigned int sib:3; unsigned int sse2avx:1; unsigned int evex:3; --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -1338,8 +1338,8 @@ pabsd, 0x0f381e, blendp, 0x660f3a0c | , , Modrm|||NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } -blendvp, 0x664a | , AVX, Modrm|Vex|Space0F3A|VexVVVV=1|VexW=1|VexSources=2|NoSuf|SSE2AVX, { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM } -blendvp, 0x664a | , AVX, Modrm|Vex|Space0F3A|VexVVVV=1|VexW=1|VexSources=2|NoSuf|Implicit1stXmm0|SSE2AVX, { RegXMM|Unspecified|BaseIndex, RegXMM } +blendvp, 0x664a | , AVX, Modrm|Vex128|Space0F3A|VexVVVV|VexW0|NoSuf|SSE2AVX, { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM } +blendvp, 0x664a | , AVX, Modrm|Vex128|Space0F3A|VexVVVV|VexW0|NoSuf|Implicit1stXmm0|SSE2AVX, { RegXMM|Unspecified|BaseIndex, RegXMM } blendvp, 0x660f3814 | , SSE4_1, Modrm|NoSuf, { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM } blendvp, 0x660f3814 | , SSE4_1, Modrm|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } dpp, 0x660f3a40 | , , Modrm|||NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } @@ -1351,8 +1351,8 @@ insertps, 0x660f3a21, movntdqa, 0x660f382a, , Modrm||NoSuf, { Xmmword|Unspecified|BaseIndex, RegXMM } mpsadbw, 0x660f3a42, , Modrm|||NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } packusdw, 0x660f382b, , Modrm|||NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } -pblendvb, 0x664c, AVX, Modrm|Vex|Space0F3A|VexVVVV=1|VexW=1|VexSources=2|NoSuf|SSE2AVX, { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM } -pblendvb, 0x664c, AVX, Modrm|Vex|Space0F3A|VexVVVV=1|VexW=1|VexSources=2|NoSuf|Implicit1stXmm0|SSE2AVX, { RegXMM|Unspecified|BaseIndex, RegXMM } +pblendvb, 0x664c, AVX, Modrm|Vex128|Space0F3A|VexVVVV|VexW0|NoSuf|SSE2AVX, { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM } +pblendvb, 0x664c, AVX, Modrm|Vex128|Space0F3A|VexVVVV|VexW0|NoSuf|Implicit1stXmm0|SSE2AVX, { RegXMM|Unspecified|BaseIndex, RegXMM } pblendvb, 0x660f3810, SSE4_1, Modrm|NoSuf, { Acc|Xmmword, RegXMM|Unspecified|BaseIndex, RegXMM } pblendvb, 0x660f3810, SSE4_1, Modrm|NoSuf, { RegXMM|Unspecified|BaseIndex, RegXMM } pblendw, 0x660f3a0e, , Modrm|||NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } @@ -1485,7 +1485,7 @@ vaddsubps, 0xf2d0, AVX, Modrm|Vex|Space0 vandnp, 0x55, AVX, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf|Optimize, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vandp, 0x54, AVX, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vblendp, 0x660c | , AVX, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vblendvp, 0x664a | , AVX, Modrm|Vex|Space0F3A|VexVVVV|VexW0|VexSources=2|CheckOperandSize|NoSuf, { RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vblendvp, 0x664a | , AVX, Modrm|Vex|Space0F3A|VexVVVV|VexW0|CheckOperandSize|NoSuf, { RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vbroadcastf128, 0x661a, AVX, Modrm|Vex=2|Space0F38|VexW=1|NoSuf, { Xmmword|Unspecified|BaseIndex, RegYMM } vbroadcastsd, 0x6619, AVX, Modrm|Vex256|Space0F38|VexW0|NoSuf, { Qword|Unspecified|BaseIndex, RegYMM } vbroadcastss, 0x6618, AVX, Modrm|Vex128|Space0F38|VexW0|NoSuf, { Dword|Unspecified|BaseIndex, RegXMM|RegYMM } @@ -1581,7 +1581,7 @@ vpalignr, 0x660f, AVX|AVX2, Modrm|Vex|Sp vpand, 0x66db, AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vpandn, 0x66df, AVX|AVX2, Modrm|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf|Optimize, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vpavg, 0x66e0 | (3 * ), AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vpblendvb, 0x664c, AVX|AVX2, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|CheckOperandSize|VexSources=2|NoSuf, { RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpblendvb, 0x664c, AVX|AVX2, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vpblendw, 0x660e, AVX|AVX2, Modrm|Vex|Space0F3A|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vpcmpeq, 0x6674 | , AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vpcmpeqd, 0x6676, AVX|AVX2, Modrm|C|Vex|Space0F|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } @@ -1828,16 +1828,16 @@ shrx, 0xf2f7, BMI2, Modrm|CheckOperandSi // FMA4 instructions -vfmaddp, 0x6668 | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|VexSources=2|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vfmadds, 0x666a | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|VexSources=2|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } -vfmaddsubp, 0x665c | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|VexSources=2|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vfmsubaddp, 0x665e | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|VexSources=2|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vfmsubp, 0x666c | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|VexSources=2|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vfmsubs, 0x666e | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|VexSources=2|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } -vfnmaddp, 0x6678 | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|VexSources=2|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vfnmadds, 0x667a | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|VexSources=2|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } -vfnmsubp, 0x667c | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|VexSources=2|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vfnmsubs, 0x667e | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|VexSources=2|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } +vfmaddp, 0x6668 | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vfmadds, 0x666a | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } +vfmaddsubp, 0x665c | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vfmsubaddp, 0x665e | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vfmsubp, 0x666c | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vfmsubs, 0x666e | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } +vfnmaddp, 0x6678 | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vfnmadds, 0x667a | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } +vfnmsubp, 0x667c | , FMA4, D|Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vfnmsubs, 0x667e | , FMA4, D|Modrm|VexLIG|Space0F3A|VexVVVV|VexW1|NoSuf, { |Unspecified|BaseIndex|RegXMM, RegXMM, RegXMM, RegXMM } // XOP instructions @@ -1847,11 +1847,11 @@ vfnmsubs, 0x667e | , FMA4, D vfrczp, 0x80 | , XOP, Modrm|SpaceXOP09|VexW0|CheckOperandSize|NoSuf|Vex, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM } vfrczs, 0x82 | , XOP, Modrm|SpaceXOP09|VexW0|NoSuf|Vex, { |RegXMM|Unspecified|BaseIndex, RegXMM } -vpcmov, 0xa2, XOP, D|Modrm|SpaceXOP08|VexSources=2|VexVVVV|VexW0|CheckOperandSize|NoSuf|Vex, { RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpcmov, 0xa2, XOP, D|Modrm|Vex|SpaceXOP08|VexVVVV|VexW0|CheckOperandSize|NoSuf, { RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vpcom, 0xcc | 0x | , XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } vpcom, 0xcc | 0x | /, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf|ImmExt, { RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpermil2p, 0x6648 | , XOP, Modrm|Space0F3A|VexVVVV|VexW0|Vex|VexSources=2|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } -vpermil2p, 0x6648 | , XOP, Modrm|Space0F3A|VexVVVV|VexW1|Vex|VexSources=2|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpermil2p, 0x6648 | , XOP, Modrm|Vex|Space0F3A|VexVVVV|VexW0|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } +vpermil2p, 0x6648 | , XOP, Modrm|Vex|Space0F3A|VexVVVV|VexW1|CheckOperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM } vphaddb, 0xc2 | , XOP, Modrm|SpaceXOP09|VexW0|NoSuf|Vex, { RegXMM|Unspecified|BaseIndex, RegXMM } vphaddbw, 0xc1, XOP, Modrm|SpaceXOP09|VexW0|NoSuf|Vex, { RegXMM|Unspecified|BaseIndex, RegXMM } vphadddq, 0xcb, XOP, Modrm|SpaceXOP09|VexW0|NoSuf|Vex, { RegXMM|Unspecified|BaseIndex, RegXMM } @@ -1863,19 +1863,19 @@ vphaddw, 0xc6 | , XOP, Modrm vphsubbw, 0xe1, XOP, Modrm|SpaceXOP09|VexW0|NoSuf|Vex, { RegXMM|Unspecified|BaseIndex, RegXMM } vphsubdq, 0xe3, XOP, Modrm|SpaceXOP09|VexW0|NoSuf|Vex, { RegXMM|Unspecified|BaseIndex, RegXMM } vphsubwd, 0xe2, XOP, Modrm|SpaceXOP09|VexW0|NoSuf|Vex, { RegXMM|Unspecified|BaseIndex, RegXMM } -vpmacsdd, 0x9e, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacsdqh, 0x9f, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacsdql, 0x97, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacssdd, 0x8e, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacssdqh, 0x8f, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacssdql, 0x87, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacsswd, 0x86, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacssww, 0x85, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacswd, 0x96, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmacsww, 0x95, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmadcsswd, 0xa6, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpmadcswd, 0xb6, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vpperm, 0xa3, XOP, D|Modrm|SpaceXOP08|VexSources=2|VexVVVV|VexW0|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacsdd, 0x9e, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacsdqh, 0x9f, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacsdql, 0x97, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacssdd, 0x8e, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacssdqh, 0x8f, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacssdql, 0x87, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacsswd, 0x86, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacssww, 0x85, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacswd, 0x96, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmacsww, 0x95, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmadcsswd, 0xa6, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpmadcswd, 0xb6, XOP, Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } +vpperm, 0xa3, XOP, D|Modrm|Vex128|SpaceXOP08|VexVVVV|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } vprot, 0x90 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexVVVV|SwapSources|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM } vprot, 0xc0 | , XOP, Modrm|Vex128|SpaceXOP08|VexW0|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } vpsha, 0x98 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexVVVV|SwapSources|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM }