From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2087.outbound.protection.outlook.com [40.107.7.87]) by sourceware.org (Postfix) with ESMTPS id 25BC53850848 for ; Fri, 10 Mar 2023 10:24:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 25BC53850848 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=bx8mzKD0eCAjisStMmitZCwoV1/KEEkP5KUi9TAq4c8JTySMMWlW825GCGeyA9jrQ4rr2A1lHpdDdGlEB2uq/FVLAPhbyx0ik6WSMqLG9Di7+pMESU0rp0cIjN+gnE04fjzGvULujhz3x0k5UspZYCpPkayWxiHB+F+FNPfd/4HBSkJ0RMfjDxKXEXH65qNJJPG0qjqmTNbgHGfJ46e1HxoV6xywY2jaO/QBHR6H0vgDqK23zeC1aUaLclUvNGhnQjkNNTtUeKc5Z3nlX92Iz9cvEhyafcwvqPWOms+ghnxWg0LHqd7YI08rPxWq4Uex/QatjLOwplAiD5uQpcOnTQ== 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=ev2OeYEOiixaJdiOtuh06ZJ2UNjYOdfuiFksSGNX+jA=; b=l+TFYlZM3rXcZaDn54fxrUQuogVBqIGI7UTiExhF6d8QIVREI9CZIF0lrGvqUsElHcq4zPsi3KoliR7swKSktlWtB7dakcxsoP22ZZkOjsdq5gW4igIv6cOoRuoIyh6Z0b3Dxcp1d+LGPrxDIr0H8YYXfWehHQC+LYr2qbt06D5QPl3aY2b5HTEldwA4ihRY8+J39rkO9U/UNCPvTdn/oPchr+gdt2RMRZpEtZ/egEVZDwzBnn8FbPm80e2E72Rq8NxptMRyS4VRQO3mQDASwQKwxW+7lLM83UKPqs7p9lvKjxFNtU/zKXy30LwDHZgJPRhY6r8g2KvbI1soCt/r5A== 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=ev2OeYEOiixaJdiOtuh06ZJ2UNjYOdfuiFksSGNX+jA=; b=NFcKdYloSM2fvobTY8v/tV6gTI5C9YThScKLkCqk5t4BXoMAJXxIbNXsNA+zlmLjeFEcTM0iYgjSWnan7TSQLPapUWv1ZzXkFz3Ua9FYxox8X7Ar5AVTOYZ2gfJBWWkRicHtFs8FG0asG1uYhiVp+g56jARknaitFFdkT3a9skwXOAGVeCLZUFYTxrfEv2j4foihI0ysXXX3fcVg7L7yAqN5grOCE3k0aX+F1i+BDiD3Ro8slZRbFYxS2wwGSnJ6nhxceGEh0olzFsMyvW7XCbO5dxgeqnhorRk0UQPaI+8Axska+0fp6YUzsjP5G5lHez8ZDf4dRqdRD95SaNjZ6w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DB9PR04MB9819.eurprd04.prod.outlook.com (2603:10a6:10:4c0::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Fri, 10 Mar 2023 10:24:05 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%5]) with mapi id 15.20.6178.019; Fri, 10 Mar 2023 10:24:05 +0000 Message-ID: <010a5ae0-91a5-813b-8896-8fd11d5383d7@suse.com> Date: Fri, 10 Mar 2023 11:24:03 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: [PATCH v2 09/14] x86: handle EVEX Disp8 for .insn Content-Language: en-US To: Binutils Cc: "H.J. Lu" , "Jiang, Haochen" References: From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR2P281CA0106.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9c::18) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DB9PR04MB9819:EE_ X-MS-Office365-Filtering-Correlation-Id: 5b10d621-8c91-4e06-6209-08db2151938c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ny102OdtOxdSeDwiWDUZN1qvL0yV3U2GKqGHzTMrgJqkCuLHLVsZoE2SM5i/z6yPVnwiTbLz0U4U4nwW6tA+2JI3QWPe7hoRI7l+p1498otfwR+0WV+OvIoNg6Ppo5rqi7HnE6+C9jhqVq+ziN3rwacfX/VogblDnD85HpHTKnX+PtvYgKBctOebm3JTcHsBHDDL3PYcdgStAfEshFAP6AvfUrf9D9dxZ4RSbCizYKFhm7u0o0SQOJGQVp6vkZNeSGac6taKmCE77g8qQbqQa+nYDtDG12LfXArGdY8Xar/zH2v2J9DqZdVDAzrS1Z/X86EPMGUDR5qsVW5KQ8f3qgi3St2pjnERWJv6DbH+4j5QRzf/Qn/LQQ55itSwjou9YIUytcGxgETtAWw/8q8ipvJ5C1ANG81RraG4ihzdQrt/T3YzUYF3mFLvCtxSx94If9aLggEmvQ3kTq5Jjmwo0g0UsO5rA6IiDymm6yxfgQMWVLTyh+sBYWpYXDFAWr7eerMK0MXv78nvsCS9yFBAwxqYGK5VlQJuJN9OHaqODc6W1dfaLKnPqMzioDhB8HjTI5P7EdGSPvkKO5oWnNYScWvahF9m3RD60jfzsA/bsTNuHL8/XHK3/ZUi7pWehcCW3o1BcfIcqdThWZj821I8PxDJt9QmGuJHYvQEhbuZRNdigy5zzl00zAT1jexnUaRnV9eVQIcQB2mY0mVuMzErEP9HJ6dv2QallHDjIShQlaviW0aOYGhFLjSrUSeH4pTJtFaOlKjZR9+XAiCfrt7EfA== 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)(396003)(39860400002)(136003)(346002)(376002)(366004)(451199018)(36756003)(5660300002)(83380400001)(26005)(186003)(6486002)(6506007)(6512007)(2616005)(66946007)(478600001)(316002)(4326008)(6916009)(8676002)(66556008)(8936002)(41300700001)(31696002)(86362001)(66476007)(54906003)(38100700002)(2906002)(31686004)(142923001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?d3B6MityUENUcFNnK1BOM1Y2amlsdEFUeC94WXNUaFNFbWF6bE9LZU1GTHNK?= =?utf-8?B?TEZLczdwK2JNYjlRUDg3OENoVVhkWkw4LzQ1S2JuajdFMUdZdnhNTHU2bnkw?= =?utf-8?B?M2hZZ2pjMVFTVDQyWHl0aktEOU4ycWJtaGplamxTODJGQkpxY2FBV052bHFy?= =?utf-8?B?a1FjYmxmT282aldvbnBDRlFGWWk5TzB4aXFUTTdNK2lWQWNkaWN1VVkyWHJE?= =?utf-8?B?a3BQTDdnL3VMdTMwK1hCUmM3aXIveTRHWEhIZ3RDKzZTbE9ldGpIVXhLZGFR?= =?utf-8?B?UVA5U1JaY1NCUlN2Vk1iZVBaN2lLZVhDMnp2bnA3QlJoKzUzMXliMmxCRTdm?= =?utf-8?B?YkFLekJOMU9FaDI0SG1FSlNMalQyM0hNMUgyVmI3cldyYitpcTcrbkJiUHFE?= =?utf-8?B?Q2FhbHEydUx2K1p6UzEzcVBjZEk4U25xclp5cllPVnRrQ3VuazZnRjk4ZUk1?= =?utf-8?B?aTNYVlY2dU1LRjY3dUJZbSt0VkhBN3lqYzF3c2pRVkxHdjAxZFNudjNtR2RY?= =?utf-8?B?YUVoUmhRa3YwTitHcWovb3FXOUNTY2hkcWVWSmpLaEl6U0lNTE9hUWIxYlBR?= =?utf-8?B?eitjSDdDMm1SRHdXTk1oUnk2MVYrcndyUXJiYWYwdFRsSEdoZ0QxaDNvVjN4?= =?utf-8?B?TEFxMW5Cd251bysyeG5sbmE2UG1aYjdqOUNMWEJQV01HazN4cnBERE9VcjM3?= =?utf-8?B?UFA2UEF6d1VVU3RGOXREQXRZZGpVSEU1MTc1eGt0Vlk5ektOZjJiam5UUGZ3?= =?utf-8?B?WUFURmw4N2tpdEdsRy95ekVwbVk4NDk0QjJFMkJ4akMxQkl3WmV6U3N4Yk54?= =?utf-8?B?SFZXeVVQU29lTUhZV0UwTXRXUi83VmlWUkhWNXZrU0FUc05ONGNJdHBhYzBP?= =?utf-8?B?bllmNGM0WlpsU1RzSUljQkdNU3dGODVRUHI2djJHRzRLeThDcGMzZ0tLbUt4?= =?utf-8?B?T2R1K0srZEs5d0Z2QXJYcTdXUmNFaU5USDNnK05RV1lOYVJSTnpsWTk2QmxK?= =?utf-8?B?dy80djMvbEc1cU83czFKSE0zSjhhQjNTeU93TFVGbTR0L2toZ1ViUEJzdGkx?= =?utf-8?B?SUZSS2xHNHNvbjgvNlNCaTdOb1dLbm1DNnZ1cnlzdjVoanZjRkVyWll3Wk10?= =?utf-8?B?Vk9WRDRoTmk1WFFWYWZtUFNMSWMyNFZhWVVNQ0JYYVlKZ0VkNmROWHJteVoy?= =?utf-8?B?MS9aSW91OGxySlJ0U2FucXZNd2M2SGlzOHNKV2hrR0JUL2lURERhTVJVS25z?= =?utf-8?B?ZExjRkFGUGFBN1NDZFVmVFY1SHUyT3RjT0kvREd2WUZVZjFMRkJwTCtKOEI3?= =?utf-8?B?YzRid0RrY01ad1lsaktFaGR4QjYxbXdnSUZBb01kU29XVVE0VEtuOC9uZDMr?= =?utf-8?B?dzFqY29JcHc0WlFOKy9KNU9oeU9pOXF0MHJzZDk1RTN0R1lXRmYyTVJzbUI1?= =?utf-8?B?c3BNQ0dLSUY4WVZlMnNvZndwblhyZ3NtNm5UdEVHbUlCRDdsU1RNaVNBajZj?= =?utf-8?B?OXYwQmlWR3pscStsYU1vSmYxSHZtUXZJd1BqTTk0NTRNQUlTWVlHc2xnOFRs?= =?utf-8?B?WUM3U2s2dTUrS3JLeHNtQlMvZEdsbjA1Unp1MXZiWjJkbHpMNHBEUnZEeXRn?= =?utf-8?B?QTB6OE5MY1dQdFhhenFWclordXNIclVMZGpsN1Q0L0FObS91VFhUajdudjJw?= =?utf-8?B?RUxzc0RaVTY4bW44NTZHMW9nOFd1elI3YjVkcXAyN000cG5ZOUhENFZHUHF2?= =?utf-8?B?L0hKSlozbjcyYlJjS2ZnS25SaHllaUVDekZGaVdJQWhJblpiUWErczdGZGJv?= =?utf-8?B?TGszWGdzSG5CcjB3M2E5dWs3VDEzY2hGdHBjb0s3Q00rMi9jM2x4TjBYcVNt?= =?utf-8?B?UGp4ZUt2S1RxZWhKNXRCUzNma3dpMDJkZmpWdTZZYTlBQ1lCZFk3bXFhc2xx?= =?utf-8?B?M3J0U0thbmxaNEJnczQvNHN1TThiNUo2RWEyUEwvY3VJTXZpOVJTTGs3czky?= =?utf-8?B?YnlsRStaMUJrWmM2YUxOTW4yZ1hOTXhCcmpHajFPcXJwbm00VHJwbjF3MWx1?= =?utf-8?B?U0c5TmtjMEN1d1RUelhZOGJHaDlvMk5veDBmWitpUU5XY0lRcktFaWdZSjNL?= =?utf-8?Q?l1PYHSw4cU3fsc0Y5vUUK0933?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5b10d621-8c91-4e06-6209-08db2151938c X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2023 10:24:05.5981 (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: JPZ5baJ7CaceuEXB5zgDnRHrWgM+GQ2rRjGuyIZG9OMXH9/I2OEmo7rEVp60wm7jEFOeMZHQYEBaJt3TotSOmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9819 X-Spam-Status: No, score=-3028.2 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 List-Id: In particular the scaling factor cannot always be determined from pre- existing operand attributes. Introduce a new {:d} vector operand syntax extension, restricted to .insn only, to allow specifying this in (at least) otherwise ambiguous cases. --- I was considering to suppress the {:d...} extension for Intel syntax, as it should not be required there (and doing so would then also prevent both possibly conflicting). Thoughts? --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -10946,8 +10946,11 @@ s_insn (int dummy ATTRIBUTE_UNUSED) if (*line == ',') { i386_operand_type combined; + expressionS *disp_exp = NULL; bool changed; + i.memshift = -1; + ptr = parse_operands (line + 1, &i386_mnemonics[MN__insn]); this_operand = -1; if (!ptr) @@ -11093,12 +11096,40 @@ s_insn (int dummy ATTRIBUTE_UNUSED) /* Establish operand size encoding. */ operand_type_set (&combined, 0); + for (j = i.imm_operands; j < i.operands; ++j) { i.types[j].bitfield.instance = InstanceNone; if (operand_type_check (i.types[j], disp)) - i.types[j].bitfield.baseindex = 1; + { + i.types[j].bitfield.baseindex = 1; + disp_exp = i.op[j].disps; + } + + if (evex && i.types[j].bitfield.baseindex) + { + unsigned int n = i.memshift; + + if (i.types[j].bitfield.byte) + n = 0; + else if (i.types[j].bitfield.word) + n = 1; + else if (i.types[j].bitfield.dword) + n = 2; + else if (i.types[j].bitfield.qword) + n = 3; + else if (i.types[j].bitfield.xmmword) + n = 4; + else if (i.types[j].bitfield.ymmword) + n = 5; + else if (i.types[j].bitfield.zmmword) + n = 6; + + if (i.memshift < 32 && n != i.memshift) + as_warn ("conflicting memory operand size specifiers"); + i.memshift = n; + } if ((i.broadcast.type || i.broadcast.bytes) && j == i.broadcast.operand) @@ -11108,6 +11139,16 @@ s_insn (int dummy ATTRIBUTE_UNUSED) combined.bitfield.class = ClassNone; } + switch ((i.broadcast.type ? i.broadcast.type : 1) + << (i.memshift < 32 ? i.memshift : 0)) + { + case 64: combined.bitfield.zmmword = 1; break; + case 32: combined.bitfield.ymmword = 1; break; + case 16: combined.bitfield.xmmword = 1; break; + case 8: combined.bitfield.qword = 1; break; + case 4: combined.bitfield.dword = 1; break; + } + if (i.vec_encoding == vex_encoding_default) { if (flag_code == CODE_64BIT && combined.bitfield.qword) @@ -11153,8 +11194,40 @@ s_insn (int dummy ATTRIBUTE_UNUSED) else if (combined.bitfield.xmmword) i.tm.opcode_modifier.evex = EVEX128; } + + if (i.memshift >= 32) + { + unsigned int n = 0; + + switch (i.tm.opcode_modifier.evex) + { + case EVEX512: n = 64; break; + case EVEX256: n = 32; break; + case EVEX128: n = 16; break; + } + + if (i.broadcast.type) + n /= i.broadcast.type; + + if (n > 0) + for (i.memshift = 0; !(n & 1); n >>= 1) + ++i.memshift; + else if (disp_exp != NULL && disp_exp->X_op == O_constant + && disp_exp->X_add_number != 0 + && i.disp_encoding != disp_encoding_32bit) + { + if (!quiet_warnings) + as_warn ("cannot determine memory operand size"); + i.disp_encoding = disp_encoding_32bit; + } + } } + if (i.memshift >= 32) + i.memshift = 0; + else if (!evex) + i.vec_encoding = vex_encoding_error; + if (i.disp_operands && !optimize_disp (&i.tm)) goto done; @@ -11329,6 +11402,29 @@ check_VecOperations (char *op_string) i.broadcast.type = bcst_type; i.broadcast.operand = this_operand; + + /* For .insn a data size specifier may be appended. */ + if (dot_insn () && *op_string == ':') + goto dot_insn_modifier; + } + /* Check .insn special cases. */ + else if (dot_insn () && *op_string == ':') + { + dot_insn_modifier: + if (op_string[1] == 'd') + { + unsigned long n; + + if (i.memshift < 32) + goto duplicated_vec_op; + + n = strtoul (op_string + 2, &end_op, 0); + if (n) + for (i.memshift = 0; !(n & 1); n >>= 1) + ++i.memshift; + if (i.memshift < 32 && n == 1) + op_string = end_op; + } } /* Check masking operation. */ else if ((mask = parse_register (op_string, &end_op)) != NULL) --- a/gas/testsuite/gas/i386/insn-32.d +++ b/gas/testsuite/gas/i386/insn-32.d @@ -23,6 +23,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: c5 f1 58 d0[ ]+vaddpd %xmm0,%xmm1,%xmm2 [ ]*[a-f0-9]+: c5 f5 58 d0[ ]+vaddpd %ymm0,%ymm1,%ymm2 [ ]*[a-f0-9]+: c5 f2 58 d0[ ]+vaddss %xmm0,%xmm1,%xmm2 +[ ]*[a-f0-9]+: 62 f1 76 08 58 50 01[ ]+\{evex\} vaddss (0x)?4\(%eax\),%xmm1,%xmm2 [ ]*[a-f0-9]+: c4 e3 69 68 19 00[ ]+vfmaddps %xmm0,\(%ecx\),%xmm2,%xmm3 [ ]*[a-f0-9]+: c4 e3 e9 68 19 00[ ]+vfmaddps \(%ecx\),%xmm0,%xmm2,%xmm3 [ ]*[a-f0-9]+: c4 e3 e9 68 18 10[ ]+vfmaddps \(%eax\),%xmm1,%xmm2,%xmm3 @@ -31,4 +32,13 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 62 f1 74 18 58 d0[ ]+vaddps \{rn-sae\},%zmm0,%zmm1,%zmm2 [ ]*[a-f0-9]+: c4 e2 79 92 1c 48[ ]+vgatherdps %xmm0,\(%eax,%xmm1,2\),%xmm3 [ ]*[a-f0-9]+: 62 f2 fd 0c 93 1c 48[ ]+vgatherqpd \(%eax,%xmm1,2\),%xmm3\{%k4\} +[ ]*[a-f0-9]+: 62 f2 7d 28 88 48 01[ ]+vexpandps (0x)?4\(%eax\),%ymm1 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%eax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%eax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%eax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%eax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%eax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%eax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 7c 48 5a 40 01[ ]+vcvtph2pd 0x10\(%eax\),%zmm0 +[ ]*[a-f0-9]+: 62 f5 7c 58 5a 40 01[ ]+vcvtph2pd (0x)?2\(%eax\)\{1to8\},%zmm0 #pass --- a/gas/testsuite/gas/i386/insn-32.s +++ b/gas/testsuite/gas/i386/insn-32.s @@ -36,6 +36,7 @@ insn: # vaddss .insn VEX.LIG.F3.0F 0x58, %xmm0, %xmm1, %xmm2 + .insn EVEX.LIG.F3.0F.W0 0x58, 4(%eax){:d4}, %xmm1, %xmm2 # vfmaddps .insn VEX.66.0F3A.W0 0x68, %xmm0, (%ecx), %xmm2, %xmm3 @@ -52,3 +53,18 @@ insn: # vgather... .insn VEX.66.0f38.W0 0x92, %xmm0, (%eax, %xmm1, 2), %xmm3 .insn EVEX.66.0f38.W1 0x93, (%eax, %xmm1, 2), %xmm3{%k4} + + # vexpandps + .insn EVEX.66.0F38.W0 0x88, 4(%eax){:d4}, %ymm1 + + # vcvtpd2phz + .insn EVEX.512.66.M5.W1 0x5a, 64(%eax), %xmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%eax), %zmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%eax){:d64}, %xmm0 + .insn EVEX.512.66.M5.W1 0x5a, 8(%eax){1to8}, %xmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%eax){1to8}, %zmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%eax){1to8:d8}, %xmm0 + + # vcvtph2pd + .insn EVEX.M5.W0 0x5a, 16(%eax){:d16}, %zmm0 + .insn EVEX.M5.W0 0x5a, 2(%eax){1to8:d2}, %zmm0 --- a/gas/testsuite/gas/i386/insn-64.d +++ b/gas/testsuite/gas/i386/insn-64.d @@ -25,6 +25,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: c4 c1 71 58 d0[ ]+vaddpd %xmm8,%xmm1,%xmm2 [ ]*[a-f0-9]+: c5 b5 58 d0[ ]+vaddpd %ymm0,%ymm9,%ymm2 [ ]*[a-f0-9]+: c5 72 58 d0[ ]+vaddss %xmm0,%xmm1,%xmm10 +[ ]*[a-f0-9]+: 62 f1 76 08 58 50 01[ ]+\{evex\} vaddss (0x)?4\(%rax\),%xmm1,%xmm2 [ ]*[a-f0-9]+: c4 e3 69 68 19 80[ ]+vfmaddps %xmm8,\(%rcx\),%xmm2,%xmm3 [ ]*[a-f0-9]+: 67 c4 e3 e9 68 19 00[ ]+vfmaddps \(%ecx\),%xmm0,%xmm2,%xmm3 [ ]*[a-f0-9]+: c4 c3 e9 68 18 10[ ]+vfmaddps \(%r8\),%xmm1,%xmm2,%xmm3 @@ -42,4 +43,13 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 62 f2 fd 04 93 1c 48[ ]+vgatherqpd \(%rax,%xmm17,2\),%xmm3\{%k4\} [ ]*[a-f0-9]+: 62 72 fd 0c 93 1c 48[ ]+vgatherqpd \(%rax,%xmm1,2\),%xmm11\{%k4\} [ ]*[a-f0-9]+: 62 e2 fd 0c 93 1c 48[ ]+vgatherqpd \(%rax,%xmm1,2\),%xmm19\{%k4\} +[ ]*[a-f0-9]+: 62 f2 7d 28 88 48 01[ ]+vexpandps (0x)?4\(%rax\),%ymm1 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%rax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%rax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%rax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%rax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%rax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%rax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 7c 48 5a 40 01[ ]+vcvtph2pd 0x10\(%rax\),%zmm0 +[ ]*[a-f0-9]+: 62 f5 7c 58 5a 40 01[ ]+vcvtph2pd (0x)?2\(%rax\)\{1to8\},%zmm0 #pass --- a/gas/testsuite/gas/i386/insn-64.s +++ b/gas/testsuite/gas/i386/insn-64.s @@ -38,6 +38,7 @@ insn: # vaddss .insn VEX.LIG.F3.0F 0x58, %xmm0, %xmm1, %xmm10 + .insn EVEX.LIG.F3.0F.W0 0x58, 4(%rax){:d4}, %xmm1, %xmm2 # vfmaddps .insn VEX.66.0F3A.W0 0x68, %xmm8, (%rcx), %xmm2, %xmm3 @@ -63,3 +64,18 @@ insn: .insn EVEX.66.0f38.W1 0x93, (%rax, %xmm17, 2), %xmm3{%k4} .insn EVEX.66.0f38.W1 0x93, (%rax, %xmm1, 2), %xmm11{%k4} .insn EVEX.66.0f38.W1 0x93, (%rax, %xmm1, 2), %xmm19{%k4} + + # vexpandps + .insn EVEX.66.0F38.W0 0x88, 4(%rax){:d4}, %ymm1 + + # vcvtpd2phz + .insn EVEX.512.66.M5.W1 0x5a, 64(%rax), %xmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%rax), %zmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%rax){:d64}, %xmm0 + .insn EVEX.512.66.M5.W1 0x5a, 8(%rax){1to8}, %xmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%rax){1to8}, %zmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%rax){1to8:d8}, %xmm0 + + # vcvtph2pd + .insn EVEX.M5.W0 0x5a, 16(%rax){:d16}, %zmm0 + .insn EVEX.M5.W0 0x5a, 2(%rax){1to8:d2}, %zmm0