From patchwork Fri Mar 3 13:03:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 63903 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp397215wrd; Fri, 3 Mar 2023 05:06:56 -0800 (PST) X-Google-Smtp-Source: AK7set+9b2zqRjukNOmKmOhuUecZ6pK98LU2W9ORFSNrP96U2HtzMsgvTFe/t46gH/5p6mcX0xQP X-Received: by 2002:a05:6402:1608:b0:4c6:9132:65 with SMTP id f8-20020a056402160800b004c691320065mr1516217edv.20.1677848816289; Fri, 03 Mar 2023 05:06:56 -0800 (PST) Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id n23-20020aa7db57000000b004acb85b9c41si2560374edt.328.2023.03.03.05.06.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Mar 2023 05:06:56 -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=rgS8QoAs; 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 7E9A2384FB5E for ; Fri, 3 Mar 2023 13:04:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7E9A2384FB5E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1677848674; bh=ev2OeYEOiixaJdiOtuh06ZJ2UNjYOdfuiFksSGNX+jA=; 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=rgS8QoAsKMdoc5os9/b9vqbAs/DnE+T5QjCc/p8KFv0nkAH/7iH71nQU2Co2WADSm 2kNh5dQXQUwkEEEtH24UERh4lJrcE+w2GFn9hLzwoDAiQmKu7ccwHSL9N9YfIi3Jbo xAUllTutKLJJ7P4DkBS93Ke5r5b+WIPtXBKYWc1E= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2058.outbound.protection.outlook.com [40.107.8.58]) by sourceware.org (Postfix) with ESMTPS id D06D438493DA for ; Fri, 3 Mar 2023 13:03:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D06D438493DA ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kt4f7H0PeInF6oCkqit+S46BLv3I5NLb/r/Zm+Mz/zfbiIae9cl6RLA8qCg8Hhziza3pPkyhaquZderoPtV1XdXYX1V3xBW4ZfUuxzHJiOf2+/Y0ENfn/dZ4pKZbonss+UtzrFZZLK/7z90HRszt+W8aVecTl909+N/YCJq4Uypj8Uotoe4jHRfdibsLHRdK2UwjkppLIQUlKwzqiIo1UCaDX+BNb8HTjMvCOFn89u+mRoNJGSlSDrdPILafiaPyF0JD7orYDRIkZnrIrIFahhoWx6SCvidqRsoUQ8l8MdWsipmSnhiTMZq1xK+uLbCLAPa4au3IhYS/BLf3cfoojw== 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=JRgm6/pIA4vZsf+y+DxzqF5x/h1/xFBPo07Jp4k2CiNaMk2pNin7OGD9j+O8/9ajtNg1RdD7KUq8auK71B3XBd5N/guRfFGQIYwIvEuV/JAcKrlM3Im3/qoGSkgVZI7uT0JTo2XkNsc8hLYAPhiLH0us0V+oSYInvuqM8VikPRzMB1eYCkbGZMw5vtgnv1Mvl/meGxjjNk2Yy09rIHPhRVA0YzAHavkYZXL3v0A9Frl5JfHLBggkkzxPnJqzrvKd2Ec8B0t1iURt9ApaY0ctDn08y3j1brzOMW9BLG1u0qXQdSn+MlmxdVqjawFSwfnoZkA9ODkLOIYv79ab+CYgpQ== 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 PA4PR04MB9222.eurprd04.prod.outlook.com (2603:10a6:102:2a1::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.18; Fri, 3 Mar 2023 13:03:53 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%7]) with mapi id 15.20.6156.019; Fri, 3 Mar 2023 13:03:53 +0000 Message-ID: <3bbf02eb-364b-88de-d6c5-3e63a79ee602@suse.com> Date: Fri, 3 Mar 2023 14:03:51 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: [PATCH 13/18] x86: handle EVEX Disp8 for .insn Content-Language: en-US To: Binutils Cc: "H.J. Lu" , "Jiang, Haochen" References: <764b9e03-18bd-6945-692f-a250522196ca@suse.com> In-Reply-To: <764b9e03-18bd-6945-692f-a250522196ca@suse.com> X-ClientProxiedBy: FR2P281CA0059.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:93::13) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PA4PR04MB9222:EE_ X-MS-Office365-Filtering-Correlation-Id: c698acce-072e-4c11-a7dd-08db1be7bd20 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W4s2zcUiOEl7D7tpUfC0bAKA5DfnqZCVso5j8AWKL0vbimLfW6P2F3fHX1D5UkgnUY6jupdiL2fPM9WBg2WH3iEdTAYjk4Yfs0K0pGdhNIiWs4ACCXxlG/s1kGe8U6Ql775psS+OI4yGWaCEZhl6911LuwUPqVbr0vzCZTPVA02Xi8nHVkQdUPyhRJFGLADfg0PTkVzdTzvpaSVNBE+gXXlNnhz1RhBd924+Pxc7ByYzLldO0tcqG35E0x4RtSUpnn3QDWsSehLJ7nuoc/Bk6uXi2phqNd7CDUASfuSESRwZOSZh+KcpuLTkr2DNRpW9OO5XOjqE6mQu9+j2PZF/SmKxOBWE9KKcC4KwguV8G6zTXg3vTPtbPdcKkRFswmnrqsdNCERVu5k9wgvyI0CJWphsnoJYLHweHFG3bMbQYqtTfdtRyL3KYndbOxhe9j85Q9VrH8SQCjzPXyaIskVc1FBzW7kF9lgJKy3BY540ZCmGtWWV/F+GnKfIfXYlyA3JebMkGBGGcGPORoLx7YUkR13Egfi2wz3U8gxxryZ4STpeIrqn9T5n6Xn3HTezBQe4liNT811UapPm0wR07pQ2LslqxsYCjyc8cTB6TGSE8cQ+4Rf/NMMDuMJxj35FlHdCb328GkMqqR8aXQkuuirrdGjcA+uJIY8UXJIj1CWDikrD8sljod+3nr7BPKLGBR2rRVWJkaAX6BYTyEeTBzJVgUpWgcPaQvFZVFnIA6aB3ccAVSKZRuzU8wxQIiGuuRkEMnX9GfiNXuRdS39+ijkZrg== 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)(39860400002)(376002)(136003)(346002)(366004)(396003)(451199018)(6486002)(31686004)(5660300002)(66476007)(4326008)(36756003)(8936002)(41300700001)(83380400001)(66946007)(2906002)(8676002)(66556008)(316002)(38100700002)(6916009)(26005)(6506007)(6512007)(186003)(2616005)(86362001)(478600001)(54906003)(31696002)(142923001)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?bHc1KnyYNmryFF1aXQUKMHDFaiyb?= =?utf-8?q?K9pf8lSyjlGZnaxuk+BliHTreEOzXSIeHLwN88KS5TQC6SuNXTayb8bQ9YcDmG6cc?= =?utf-8?q?pRUNIdU7f4QhMENjgTLj6HSJwkkASHf1uj+UWn1CMyLOPDcsQLSuNYWMA9MOf68nd?= =?utf-8?q?QEl1+C0yEa8hK30tKnKJbLEJ3wKiGxzA3zP+HX06cMGi6ODKFsEEUG4cQbTxNmj99?= =?utf-8?q?Hjnpy690Ni1xLBu7zyGYE0O5c6CYihQglmlnX298tcFAiNB448jb+X6L1T/o2oM8O?= =?utf-8?q?7bvhgdct19r2AI+My7ZrxBwGN7h9IxxgkwFTIUB63JqvWEFSdMwFYqkxMlU2pHqYj?= =?utf-8?q?/tQbdODkmSGb2H0lU1cZ+d7zpP76wBaxZ/m87ijJh2SSNyBKnq7czpJTdvysUPb6x?= =?utf-8?q?7fxvkNAkZa5ph/Jz35v3ThmWt4FbjTsqbjQdK0WSCSnFyjf2Vu2xr4A+31/MfHJyM?= =?utf-8?q?tDPa5rHAebiqlEeJFaf8inY2dq6SdcubsIDgHdiP5wQkb1u1AhO1xWh7arRscXLJk?= =?utf-8?q?2NCAgiW59KtIyDkSxm6jVBTQHmtcfQS3+xDlq8BT5wpCVvtxAZWtMFcHRowc3Uypn?= =?utf-8?q?OYwlqBggdPZsOyghMLXcHlZZYiWiKFkVd6wTKI4OZ4hbBE2cLdD73rn4fFiJOH3Ss?= =?utf-8?q?kOsx+1pRVJ+WOoS5drNb2K8BQq69Uv86gkg+mYl3TD8pfFrG1hJ2X99bQh4rEqChV?= =?utf-8?q?4MviL25Kk/dbO4ihXm0E4QOb+S4OwxMak3PmmUAUy+HQ4uB0z6NsQUBuBuXAsVUZn?= =?utf-8?q?r7nEuAcb8MxDQ5zFdeqTStTLFcOFoW+ESEBmVEShq3JxN45a2sUOznbIrY3ImZhyg?= =?utf-8?q?2LTM4a4dxmn5W3cuWRzWzaR/A37yLnjVsgUkGMIQisWx5/QWou4fi2PmKXQxxJYEm?= =?utf-8?q?iBONmRW096rP7mo/f2PGGmudndb9WRwVF1XtQ6SdjHc/86tk6RtfAyAqfKjPx5Io2?= =?utf-8?q?6st/0IJmaT+wIb+b/llt3WAS1fve7lDnV4euAvGTOAx/5c/poOW6LAtx9d25wyiXM?= =?utf-8?q?HA0b+l3vYW1rSWU/6saHenk4onOHgFR1g6GzKbpvrpurAYIga2jm/iJEcPFcrUuDh?= =?utf-8?q?D/zlU9ZcCf/WbE3oYEM3uzOvih0nel7aLhSPXB3fBrsCSX/h7TpHo44pBsl1rs7bZ?= =?utf-8?q?bqaj9Q+E+IopxR/1c7M0zpFNLio2BqXgVl3lBCX91n+1pC7TweClPvegMEmEXt2/x?= =?utf-8?q?5fwszh0kOYvR40tBKmULkjgbWOSl1coQjHlKNr+cKHxzHEmfLqAt2bZHJA9WHL0Qu?= =?utf-8?q?elEURCTyOx4T+T5didCQL1ZObE9CCenU9R/Ic0dq0FpG5MPCMvD3zk+vGRBUR0IfM?= =?utf-8?q?1Kbu5+SKzMmtXjlwWJsJT4LNBChOC6nJA6EIbuozH2gQjkIeDeFBoyl1qvJOWgtWr?= =?utf-8?q?uQNJH1nLRB4J4H+OP1wHitIszsjGM7vPB3WxovQsnIxlS4ox8VcXFsQSBn5fO4N37?= =?utf-8?q?acay7KRna9hhZBhuyC7Zo5rgQnxucelJBP+Xu8YWO0Q/T4pWmcloozgMh/DzpNMyA?= =?utf-8?q?gg89VJm/DZyi?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c698acce-072e-4c11-a7dd-08db1be7bd20 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2023 13:03:52.9048 (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: 9iRgO9EDriAvBmhyqMDt9/hUHJGYNUyQ8jnic0Z9SfDaGn2UIkFkoBLUFWZm2ADgRi+vCmmCD16jzbcBsP3Wig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB9222 X-Spam-Status: No, score=-3028.3 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?1759352000632064461?= X-GMAIL-MSGID: =?utf-8?q?1759352000632064461?= 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