From patchwork Fri Jun 16 10:17:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 109017 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1225459vqr; Fri, 16 Jun 2023 03:18:26 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5/c8fxJUchIuy3LnpfWXeKMiEH2C/U+mjbKjDMtlrv2uNMaSI91kflJ3DaMw6XBxBUSsGC X-Received: by 2002:a2e:740d:0:b0:2b3:4909:192b with SMTP id p13-20020a2e740d000000b002b34909192bmr1344091ljc.44.1686910705833; Fri, 16 Jun 2023 03:18:25 -0700 (PDT) Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id n14-20020a056402060e00b00518344c0b28si7199951edv.283.2023.06.16.03.18.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Jun 2023 03:18:25 -0700 (PDT) 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=PaPAYIUg; 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 5FAA23850214 for ; Fri, 16 Jun 2023 10:17:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5FAA23850214 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1686910659; bh=nc4GcLPV/W2PWCmDQ6JxIsAtL04fed5HKS0tKrhRVXE=; 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=PaPAYIUg24FvVHLtFR9t8aMoujgrbbbYxeSfxjYVkE6CyaUU84N66uRSTRnGS4XtT g3Kr1dVRmlJ3mP1LtEF/PE1Qi4nr5O6QnjBusZPzhC+dmZQObXmcQUbNrwJl416C+j zJ49PI60d9pjCaXkX4cqXa/PIehVuuaEwhs3J9bY= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2072.outbound.protection.outlook.com [40.107.247.72]) by sourceware.org (Postfix) with ESMTPS id 4509D3853D1D for ; Fri, 16 Jun 2023 10:17:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4509D3853D1D ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nv1oTTY3Vo3jakG8IA2yFRNsBTsvlwpDCucp1eMYwHce9H71L8GAcNUJwiAeX3iodDiv341TmN3HaxJzrmmwWbll2fDFxQM0Vde7GLSAJahA+1GoB8wKm2hO9vBsOLinWlxYhyPxUMIhJvD7Yczj/O5ZR0/6syGj5vBUTL+hQbqatZ+c0GjnE5CnooYT1Uz7mMXcO968eqPsCa2kLjxeEdjjTFrTKACaBFC339m5YnHaPsfpFQCQQCR+bVexNZyzLW/UO31kZAVDAmKbpYs4IlCJrDMnO/N/5gdtDaa/0WV31sZdO7Ij0estdkBwu3SkDf/bIZ8XBFrhnoCuPhoNlQ== 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=nc4GcLPV/W2PWCmDQ6JxIsAtL04fed5HKS0tKrhRVXE=; b=CH3mK3tCBv22IHhmEzJDqC57/wkh2H00mF8rQLjStg9QPZ0ONZDoX7HaV6iC1Q8wy3wUvVKpjMjz+QaC58wZLpm/n6ZTRI/xjAovfJYSr7RO9GzyzaaT4V9ixWutpjvA17Wk0E0w781L5xITj19kro04HZZAWPck5Xe//4gA+Wc0ypcuCyrrSb9zM8Xt8vdPDmNb2k8OwKBfLyliIIFHSIS5wXOokT+FAXWHEyfVmkaNRb0xobsV4iMdDzlI2482VB/1f/Ey0+pExNRuVSD6SQ4JULv8QLrpkm7QTvDSM9037EKBI3b2/VWboWpTfdWKbj0myx+ROszvD/hiIP1Zcg== 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 VI1PR04MB6944.eurprd04.prod.outlook.com (2603:10a6:803:133::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.37; Fri, 16 Jun 2023 10:17:28 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c%5]) with mapi id 15.20.6455.039; Fri, 16 Jun 2023 10:17:28 +0000 Message-ID: <33c2fa9f-1f8e-bed0-8653-39eb876fb0b3@suse.com> Date: Fri, 16 Jun 2023 12:17:26 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: [PATCH 5/5] x86: flag bad EVEX masking for miscellaneous insns Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: <74bff744-e838-1e98-6cd2-dcaff901f8a6@suse.com> In-Reply-To: <74bff744-e838-1e98-6cd2-dcaff901f8a6@suse.com> X-ClientProxiedBy: FR2P281CA0183.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9f::19) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|VI1PR04MB6944:EE_ X-MS-Office365-Filtering-Correlation-Id: 76668523-d562-471b-b69b-08db6e52e32d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LUBHnVutZbmd//6kKkfNOXzv6/Pb3s5JnItvwEm1ImewG4On5NQKrwf3jx7OOkkhHXCk+cLehaLzrr/oGPPmd2hONrR2BUbNrEEsPk2uGwV+6xsmP/uIT4/eVTaMvYT0/JxY6b9lvDlOmR6apsFp2bx4OECYmAKx8MB57z+dBGvCvg1Z+6Gll2Q8ZX0BJgJskTV8JrluzVgq7I0Df8LX9EyK4k+OPKA6eYBmSTAd1pF0CPBBuC+fI7AWIMNgvlTcvI0SZFlS2lK7veyqVJxGE5xbjklrK5UQrCEXmKi+W82Sr/Mqrmn4rfVzSnjFQ6c3mE75DjjDwKOtaWVbMlzw3twAFN+T4JlQiFDhXknES216VepRWUqKGHxbygC+zLbpyk5Ze6du2wBR4p4AcIFrF3TZupLSe4QasU0664SDT3RL+PONb8H/0+5/UfYNiz+NmyfCfII0JPtl1kqN0LQr3KeRXr1jQFKza6UP/dRvH585ChpvP/HaBR3lhqFTX32oW7/P+u5h04yapJVFYKExGtXZVH0J7Kn2HWN520zqpuUCUcoSTFFzoJ2lSLZv/5x7+JVq9DmaRLlkubvID113vz0Z7yQr4Qe3cosMeHKGHjeWyYS8hvUbQSCciLvFDtSylTD6iEHWmggn73hgB7XaRA== 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:(13230028)(376002)(366004)(396003)(136003)(346002)(39860400002)(451199021)(186003)(26005)(6506007)(478600001)(6512007)(31696002)(86362001)(6486002)(6916009)(31686004)(4326008)(66556008)(66476007)(66946007)(316002)(30864003)(2906002)(8676002)(8936002)(5660300002)(38100700002)(2616005)(41300700001)(36756003)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?QdL3Abr+Zwmy5dzmZLzw0G0B1+px?= =?utf-8?q?85AeKvMkq5tiL2hJ5BFQ7fRYmAoQFn/m5xpNk7SUv/KXH/HsvzmS/OUfGvQwMzhuT?= =?utf-8?q?kvleEe2x3crgjVnKlwpX4ESJFV6ucGp8iWEUvzLG+nMa9A7kp0du6Zzds4rs0JVsc?= =?utf-8?q?LZu2K+ZjRBnGvzAeNC6LMwhBG379Asor8rcIST6jt+KnK0vLuskkwmXFj2/d4szy6?= =?utf-8?q?wQOg4QeD2yoZ8jQP/DabVfs/8P5i/zDTZ1vjBcS/g6DagtQ3bJwto2uvpSJRtwu2e?= =?utf-8?q?7xCxFCifB1Lm4YetUBn6jMluerU3EquIHGMeHWz5p7xposzC/ZbL+BBssEWmtmntI?= =?utf-8?q?n+KV/Ki20oeBZSBOGXX9LcmuthGMzlbfTulYqohW2yXTxfp7KDJFdD6iqwUYSQzba?= =?utf-8?q?EgKX8/FW6WPOxrDk3a0IbjWjOr11RrSCcnYSpudwwXFytgrnEs5qZV7Y4sqoIKnmW?= =?utf-8?q?q6jRVCzVT+Qdwiq6ZjuztFONB8p2wrlKE9ny9O5mS4tTO6uW7nkbyvPZfDqzVWH28?= =?utf-8?q?9LTLYKYeCv7jc90lHyxNesM+UwvbYvMp6VEq/nhWxBC3TjM35upUb+qS9zH7kpFhM?= =?utf-8?q?omqB7mxM8rRyROdfHAQIPdYL/rOeUAtLGX73FH/0047k8/TAFJ/tUOQjI4PKGyuQ3?= =?utf-8?q?KL82PyezHZq2yhAwEkKE/hD34rGhkvxp20ASd0e5BHY6zIiulh6MrIP61mRDmy157?= =?utf-8?q?7VkxRiRVMEOjjwmQTwBMvRhbV6Wd0ZR/leC1iW4/AcqJwS9h9OKszffu8hbyP1ev9?= =?utf-8?q?CFH1PKMeoq7zZfsfTZNNqr82XR4w/Y42WB3Pkl1Tsf6kZHmyB2f/1tevG8/zjBhJO?= =?utf-8?q?RJI0AiZxGaLz1/IOmhJ4hei7LkIxhqYXim0DQtszldxyWg7nN9AZFeOG17kVEzSl3?= =?utf-8?q?YTSYmRWEWa7gAkhZRS/WVKHo39GK+PcCEE5MXNjw6pibL/CrJ2HDlsJ9UZgG6EWAv?= =?utf-8?q?shingX2coRlymSrv8h/0rxsUIfiNoku6BkllYTfAdXMdvRFCBnrBnVl7WDOfUYd4o?= =?utf-8?q?NNH57Zs8SN+rpgozScjT4Qy0Iq8qpVxNUJovJI/u3ZLFKlATHCuHJ73x6lYTDb4KK?= =?utf-8?q?Ah8Uv07agDx9/VCyQdr+SqVRAiXwrY1YiK8Eto77r9tKGSZHdc5vy1x0KgWaCJGyH?= =?utf-8?q?hjeA5qGn6+glCsZ+s3DeoF+wGZ5QMfeBPXwmjwiGCcyzNtZCCaFUMtoeuvdqR4Ari?= =?utf-8?q?NO5n5zV1GgLDSTxV30siyytWw8MHkZEdQIzhRUMJRXxEllZo88xlNDZa61oStJ13T?= =?utf-8?q?QgX3xDKCDEPaTbuItTqyjAEgPzCXXSVd3on6JvWBNnOEMLw5/sZ9Zw9vI//0MVQGh?= =?utf-8?q?XO9SCixo/0KWXRHXGXBni9UjVaxVJCJFbLELWMy9sBxGQfGdK3uLkGLEUYqttjlNG?= =?utf-8?q?pymhTt8arE4CdlIF+YOjOi0/2oZQOujTeSv9ov/46efL6hy+cg3XznuRztPPbWh9b?= =?utf-8?q?v0KMEAgRyvaTz0OV4qu4vS9cAFM5lh1W0Q2G9PcnlZ7Civ5drv+nCHiFy+MDVyRbo?= =?utf-8?q?654veFApZUi8?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76668523-d562-471b-b69b-08db6e52e32d X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 10:17:28.2154 (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: eaWAkHbif0+d6RPm4Iw1WUWf6lMHrzT45CvN0BPFbM8OWw90TMxIzgm41DB1C7l92ihQmuCya8tz1XvSE77vLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6944 X-Spam-Status: No, score=-3017.6 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, UNWANTED_LANGUAGE_BODY 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?1768854080300755108?= X-GMAIL-MSGID: =?utf-8?q?1768854080300755108?= Masking is not permitted for certain further insns, not falling in any of the earlier categories. Introduce the Y macro (not expanding to any output) to flag such cases. Note that in a few cases entries already covered otherwise are converted as well, to continue to allow sharing of the string literals. --- a/gas/testsuite/gas/i386/avx512f-nondef.d +++ b/gas/testsuite/gas/i386/avx512f-nondef.d @@ -24,4 +24,5 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 62 f1 7c cf 29 00 vmovaps %zmm0,\(%eax\)\{%k7\}\{z\}/\(bad\) [ ]*[a-f0-9]+: 62 f1 7d 0a c5 c8 00 vpextrw \$(0x)?0,%xmm0,%ecx\{%k2\}/\(bad\) [ ]*[a-f0-9]+: 62 f3 7d 0a 16 01 00 vpextrd \$(0x)?0,%xmm0,\(%ecx\)\{%k2\}/\(bad\) +[ ]*[a-f0-9]+: 62 f2 7d 4a 2a 01 vmovntdqa \(%ecx\),%zmm0\{%k2\}/\(bad\) #pass --- a/gas/testsuite/gas/i386/avx512f-nondef.s +++ b/gas/testsuite/gas/i386/avx512f-nondef.s @@ -38,3 +38,6 @@ # vpextrd $0, %xmm0, (%ecx) with non-zero EVEX.aaa .insn EVEX.66.0f3a 0x16, $0, %xmm0, (%ecx){%k2} + + # vmovntdqa (%ecx), %zmm0 with non-zero EVEX.aaa + .insn EVEX.66.0f38.W0 0x2a, (%ecx), %zmm0{%k2} --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1806,7 +1806,7 @@ struct dis386 { 'V' unused. 'W' => print 'b', 'w' or 'l' ('d' in Intel mode) 'X' => print 's', 'd' depending on data16 prefix (for XMM) - 'Y' unused. + 'Y' => no output, mark EVEX.aaa != 0 as bad. 'Z' => print 'q' in 64bit mode and 'l' otherwise, if suffix_always is true. '!' => change condition from true to false or from false to true. '%' => add 1 upper case letter to the macro. @@ -1828,6 +1828,8 @@ struct dis386 { "XV" => print "{vex} " pseudo prefix "XE" => print "{evex} " pseudo prefix if no EVEX-specific functionality is is used by an EVEX-encoded (AVX512VL) instruction. + "YK" keep unused, to avoid ambiguity with the combined use of Y and K. + "YX" keep unused, to avoid ambiguity with the combined use of Y and X. "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 is true. @@ -3719,9 +3721,9 @@ static const struct dis386 prefix_table[ /* PREFIX_VEX_0F2A */ { { Bad_Opcode }, - { "%XEvcvtsi2ss{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, + { "%XEvcvtsi2ssY{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, { Bad_Opcode }, - { "%XEvcvtsi2sd{%LQ|}", { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 }, + { "%XEvcvtsi2sdY{%LQ|}", { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 }, }, /* PREFIX_VEX_0F2C */ @@ -3742,16 +3744,16 @@ static const struct dis386 prefix_table[ /* PREFIX_VEX_0F2E */ { - { "%XEvucomisX", { XMScalar, EXd, EXxEVexS }, 0 }, + { "%XEvucomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, { Bad_Opcode }, - { "%XEvucomisX", { XMScalar, EXq, EXxEVexS }, 0 }, + { "%XEvucomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, }, /* PREFIX_VEX_0F2F */ { - { "%XEvcomisX", { XMScalar, EXd, EXxEVexS }, 0 }, + { "%XEvcomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, { Bad_Opcode }, - { "%XEvcomisX", { XMScalar, EXq, EXxEVexS }, 0 }, + { "%XEvcomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, }, /* PREFIX_VEX_0F41_L_1_M_1_W_0 */ @@ -7004,32 +7006,32 @@ static const struct dis386 vex_table[][2 static const struct dis386 vex_len_table[][2] = { /* VEX_LEN_0F12_P_0_M_0 / VEX_LEN_0F12_P_2_M_0 */ { - { "%XEvmovlpX", { XM, Vex, EXq }, 0 }, + { "%XEvmovlpYX", { XM, Vex, EXq }, 0 }, }, /* VEX_LEN_0F12_P_0_M_1 */ { - { "%XEvmovhlp%XS", { XM, Vex, EXq }, 0 }, + { "%XEvmovhlpY%XS", { XM, Vex, EXq }, 0 }, }, /* VEX_LEN_0F13_M_0 */ { - { "%XEvmovlpX", { EXq, XM }, PREFIX_OPCODE }, + { "%XEvmovlpYX", { EXq, XM }, PREFIX_OPCODE }, }, /* VEX_LEN_0F16_P_0_M_0 / VEX_LEN_0F16_P_2_M_0 */ { - { "%XEvmovhpX", { XM, Vex, EXq }, 0 }, + { "%XEvmovhpYX", { XM, Vex, EXq }, 0 }, }, /* VEX_LEN_0F16_P_0_M_1 */ { - { "%XEvmovlhp%XS", { XM, Vex, EXq }, 0 }, + { "%XEvmovlhpY%XS", { XM, Vex, EXq }, 0 }, }, /* VEX_LEN_0F17_M_0 */ { - { "%XEvmovhpX", { EXq, XM }, PREFIX_OPCODE }, + { "%XEvmovhpYX", { EXq, XM }, PREFIX_OPCODE }, }, /* VEX_LEN_0F41 */ @@ -7081,7 +7083,7 @@ static const struct dis386 vex_len_table /* VEX_LEN_0F6E */ { - { "%XEvmovK", { XMScalar, Edq }, PREFIX_DATA }, + { "%XEvmovYK", { XMScalar, Edq }, PREFIX_DATA }, }, /* VEX_LEN_0F77 */ @@ -7092,7 +7094,7 @@ static const struct dis386 vex_len_table /* VEX_LEN_0F7E_P_1 */ { - { "%XEvmovq", { XMScalar, EXq }, 0 }, + { "%XEvmovqY", { XMScalar, EXq }, 0 }, }, /* VEX_LEN_0F7E_P_2 */ @@ -7142,7 +7144,7 @@ static const struct dis386 vex_len_table /* VEX_LEN_0FC4 */ { - { "%XEvpinsrw", { XM, Vex, Edw, Ib }, PREFIX_DATA }, + { "%XEvpinsrwY", { XM, Vex, Edw, Ib }, PREFIX_DATA }, }, /* VEX_LEN_0FC5 */ @@ -7152,7 +7154,7 @@ static const struct dis386 vex_len_table /* VEX_LEN_0FD6 */ { - { "%XEvmovq", { EXqS, XMScalar }, PREFIX_DATA }, + { "%XEvmovqY", { EXqS, XMScalar }, PREFIX_DATA }, }, /* VEX_LEN_0FF7 */ @@ -7302,17 +7304,17 @@ static const struct dis386 vex_len_table /* VEX_LEN_0F3A20 */ { - { "%XEvpinsrb", { XM, Vex, Edb, Ib }, PREFIX_DATA }, + { "%XEvpinsrbY", { XM, Vex, Edb, Ib }, PREFIX_DATA }, }, /* VEX_LEN_0F3A21 */ { - { "%XEvinsertps", { XM, Vex, EXd, Ib }, PREFIX_DATA }, + { "%XEvinsertpsY", { XM, Vex, EXd, Ib }, PREFIX_DATA }, }, /* VEX_LEN_0F3A22 */ { - { "%XEvpinsrK", { XM, Vex, Edq, Ib }, PREFIX_DATA }, + { "%XEvpinsrYK", { XM, Vex, Edq, Ib }, PREFIX_DATA }, }, /* VEX_LEN_0F3A30 */ @@ -11125,7 +11127,12 @@ putop (instr_info *ins, const char *in_t *ins->obufp++ = 's'; break; case 'Y': - if (l == 1 && last[0] == 'X') + if (l == 0) + { + if (ins->vex.mask_register_specifier) + ins->illegal_masking = true; + } + else if (l == 1 && last[0] == 'X') { if (!ins->need_vex) abort (); --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -278,7 +278,7 @@ static const struct dis386 evex_table[][ { VEX_W_TABLE (EVEX_W_0FF3) }, { VEX_W_TABLE (EVEX_W_0FF4) }, { "%XEvpmaddwd", { XM, Vex, EXx }, PREFIX_DATA }, - { "%XEvpsadbw", { XM, Vex, EXx }, PREFIX_DATA }, + { "%XEvpsadbwY", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, /* F8 */ { "%XEvpsubb", { XM, Vex, EXx }, PREFIX_DATA }, @@ -540,10 +540,10 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { "%XEvaesenc", { XM, Vex, EXx }, PREFIX_DATA }, - { "%XEvaesenclast", { XM, Vex, EXx }, PREFIX_DATA }, - { "%XEvaesdec", { XM, Vex, EXx }, PREFIX_DATA }, - { "%XEvaesdeclast", { XM, Vex, EXx }, PREFIX_DATA }, + { "%XEvaesencY", { XM, Vex, EXx }, PREFIX_DATA }, + { "%XEvaesenclastY", { XM, Vex, EXx }, PREFIX_DATA }, + { "%XEvaesdecY", { XM, Vex, EXx }, PREFIX_DATA }, + { "%XEvaesdeclastY", { XM, Vex, EXx }, PREFIX_DATA }, /* E0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -660,7 +660,7 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F3A42) }, { EVEX_LEN_TABLE (EVEX_LEN_0F3A43) }, - { "%XEvpclmulqdq", { XM, Vex, EXx, PCLMUL }, PREFIX_DATA }, + { "%XEvpclmulqdqY", { XM, Vex, EXx, PCLMUL }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -998,7 +998,7 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { "vmovw", { XMScalar, Edw }, PREFIX_DATA }, + { "vmovwY", { XMScalar, Edw }, PREFIX_DATA }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, --- a/opcodes/i386-dis-evex-mod.h +++ b/opcodes/i386-dis-evex-mod.h @@ -9,22 +9,22 @@ /* MOD_EVEX_0F3828_P_1 */ { { Bad_Opcode }, - { "vpmovm2%BW", { XM, MaskE }, 0 }, + { "vpmovm2Y%BW", { XM, MaskE }, 0 }, }, /* MOD_EVEX_0F382A_P_1_W_1 */ { { Bad_Opcode }, - { "vpbroadcastmb2q", { XM, MaskE }, 0 }, + { "vpbroadcastmb2qY", { XM, MaskE }, 0 }, }, /* MOD_EVEX_0F3838_P_1 */ { { Bad_Opcode }, - { "vpmovm2%DQ", { XM, MaskE }, 0 }, + { "vpmovm2Y%DQ", { XM, MaskE }, 0 }, }, /* MOD_EVEX_0F383A_P_1_W_0 */ { { Bad_Opcode }, - { "vpbroadcastmw2d", { XM, MaskE }, 0 }, + { "vpbroadcastmw2dY", { XM, MaskE }, 0 }, }, /* MOD_EVEX_0F385A */ { --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -42,9 +42,9 @@ /* PREFIX_EVEX_0F7B */ { { Bad_Opcode }, - { "vcvtusi2ss{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, + { "vcvtusi2ssY{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, { VEX_W_TABLE (EVEX_W_0F7B_P_2) }, - { "vcvtusi2sd{%LQ|}", { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 }, + { "vcvtusi2sdY{%LQ|}", { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 }, }, /* PREFIX_EVEX_0F7E */ { @@ -166,7 +166,7 @@ /* PREFIX_EVEX_0F3829 */ { { Bad_Opcode }, - { "vpmov%BW2m", { MaskG, EXx }, 0 }, + { "vpmov%BW2mY", { MaskG, EXx }, 0 }, { VEX_W_TABLE (EVEX_W_0F3829_P_2) }, }, /* PREFIX_EVEX_0F382A */ @@ -220,7 +220,7 @@ /* PREFIX_EVEX_0F3839 */ { { Bad_Opcode }, - { "vpmov%DQ2m", { MaskG, EXx }, 0 }, + { "vpmov%DQ2mY", { MaskG, EXx }, 0 }, { "%XEvpmins%DQ", { XM, Vex, EXx }, 0 }, }, /* PREFIX_EVEX_0F383A */ @@ -248,7 +248,7 @@ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { "vp2intersect%DQ", { MaskG, Vex, EXx, EXxEVexS }, 0 }, + { "vp2intersectY%DQ", { MaskG, Vex, EXx, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_0F3872 */ { @@ -357,7 +357,7 @@ /* PREFIX_EVEX_MAP5_2A */ { { Bad_Opcode }, - { "vcvtsi2sh{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, + { "vcvtsi2shY{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, }, /* PREFIX_EVEX_MAP5_2C */ { @@ -371,11 +371,11 @@ }, /* PREFIX_EVEX_MAP5_2E */ { - { "vucomis%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vucomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP5_2F */ { - { "vcomis%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vcomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP5_51 */ { @@ -447,7 +447,7 @@ /* PREFIX_EVEX_MAP5_7B */ { { Bad_Opcode }, - { "vcvtusi2sh{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, + { "vcvtusi2shY{%LQ|}", { XMScalar, VexScalar, EXxEVexR, Edq }, 0 }, { "vcvtp%XH2qq", { XM, EXxmmqdh, EXxEVexR }, 0 }, }, /* PREFIX_EVEX_MAP5_7C */ --- a/opcodes/i386-dis-evex-w.h +++ b/opcodes/i386-dis-evex-w.h @@ -293,7 +293,7 @@ }, /* EVEX_W_0F382A_P_2 */ { - { "%XEvmovntdqa", { XM, EXEvexXNoBcst }, 0 }, + { "%XEvmovntdqaY", { XM, EXEvexXNoBcst }, 0 }, }, /* EVEX_W_0F382B */ { --- a/opcodes/i386-dis-evex-reg.h +++ b/opcodes/i386-dis-evex-reg.h @@ -23,11 +23,11 @@ { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F73_R_2) }, - { "%XEvpsrldq", { Vex, EXx, Ib }, PREFIX_DATA }, + { "%XEvpsrldqY", { Vex, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { VEX_W_TABLE (EVEX_W_0F73_R_6) }, - { "%XEvpslldq", { Vex, EXx, Ib }, PREFIX_DATA }, + { "%XEvpslldqY", { Vex, EXx, Ib }, PREFIX_DATA }, }, /* REG_EVEX_0F38C6_M_0_L_2 */ {