From patchwork Wed Jun 15 10:30:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 12882089 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 55E56C433EF for ; Wed, 15 Jun 2022 10:31:38 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.349949.576164 (Exim 4.92) (envelope-from ) id 1o1QJ5-0007hP-CK; Wed, 15 Jun 2022 10:31:27 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 349949.576164; Wed, 15 Jun 2022 10:31:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o1QJ5-0007hI-8I; Wed, 15 Jun 2022 10:31:27 +0000 Received: by outflank-mailman (input) for mailman id 349949; Wed, 15 Jun 2022 10:31:25 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o1QJ3-0007gz-MR for xen-devel@lists.xenproject.org; Wed, 15 Jun 2022 10:31:25 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on062b.outbound.protection.outlook.com [2a01:111:f400:fe0c::62b]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 3beb87d1-ec96-11ec-bd2c-47488cf2e6aa; Wed, 15 Jun 2022 12:30:54 +0200 (CEST) Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DB8PR04MB6876.eurprd04.prod.outlook.com (2603:10a6:10:116::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.20; Wed, 15 Jun 2022 10:30:52 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::dfa:a64a:432f:e26b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::dfa:a64a:432f:e26b%7]) with mapi id 15.20.5332.020; Wed, 15 Jun 2022 10:30:52 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 3beb87d1-ec96-11ec-bd2c-47488cf2e6aa ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DE0NnyhkLT+KxeYdCD6VvVynLmARSPYuxsy2X0bbwIPJrypbjKwYjUZQKcf37uka9z7chsfR8oJ6KrsAAdRhIaqQBG+TkVm9tpQhivpo4ESCCUUe+We8LloTiooCX9ez33ujcuq1iSyJSt41GuoPuc4vAqLXJNwuCUI28uG2h+bUc7OW0AaWlSDEXS9cNbsQgvgmVKqqv9nIXekrfNJV+51Hin3FWLMW7l4NK6JYBzLFKX1VtKX32//K1NaOXm4DkEozXY46tHhsVbxJuwOu0qkObG5LQpQe3mG87utKT3Z6mhs3Fk54hFyG7zOZO+jMYKYqvpfc8Ug3fh3sWKZ4TA== 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=k2dOvs6g6kpvHhFE2Cq6miTN2SdtjeNE6N4Fh2/FJ04=; b=Q3JUbM4c/zh9J4OIqT5nY/7nWOP4SlMe0Fx3s/q7pr6nHe1C8o6EqXk+60TPR0Zkrffi2RDSBkCoJITgpgq9nMa9+vIET3sfI3b5qUlZUzbPAHiqbJgNOHNi3xcRuOqvAJ56ObSE51LJZL16643UAOMoAptPLgEmKJyTPAddBKNAp6K90PLZrYmzzHa4flSCQ1fenKK+I9x0gPEH508yj7dvbl9R5qidKgqb9qPJ5OgnbDXb+4C3ku7Szj39MG8S8JUV7JEvg2Np1/LfGPKAq41WUrwS6HgoAIESsRCAdYMpP0q5wlroNwo2PLXBKUjBEsg1UIgTLwg2M80DaywgpQ== 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=k2dOvs6g6kpvHhFE2Cq6miTN2SdtjeNE6N4Fh2/FJ04=; b=bY3fkeDUYNXJz5EB4PHT0YKB6FK7T6TjQkOi7NNPZkzdcQb2I/Kr+LYXzTMjgf3LlBCaDTYlZAEV83jPt6uJVLv9lTPabdUe4jK92QSMAAB8INQ3TSwSPc6h6B+A5OG4awUvVjncLT+S1NwRp4hd/SKQbe3GA0EFXomEk4gwMq6tEFhx3XxYSXKl5ApgCwPQ1nn5goZ0SsMq8Td/GdeuYxgt0HNz9glFxMhK52MyW3QBpC2XVuuFA7CidYyc9/5Mo1xMMyuw5mODJPmUGAGbHR942sk7UAF5rvQQCR0gWrDLsPi8wL5cDGUPCrl7Gh43/pzNZwWhDaIRTpCr+nOOdg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <4d9c76d3-763c-c1e6-f38b-9282f023a995@suse.com> Date: Wed, 15 Jun 2022 12:30:50 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Subject: [PATCH 09/11] x86emul: handle AVX512-FP16 floating point conversion insns Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: <9ba3aaa7-56ce-b051-f1c4-874276e493e1@suse.com> In-Reply-To: <9ba3aaa7-56ce-b051-f1c4-874276e493e1@suse.com> X-ClientProxiedBy: AS9P194CA0029.EURP194.PROD.OUTLOOK.COM (2603:10a6:20b:46d::35) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f7da50cf-ece9-4bad-2d56-08da4eba1f48 X-MS-TrafficTypeDiagnostic: DB8PR04MB6876:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zR/6NkwkcywMZtd0xmdG34avwsFW9weN3rw6DSXBgIGbg4ftmMjNmETqcOMjWgH0Al5SbXaSzh1Y5yMkkPSdhrJksZTRomfMYRCATfjNZlNCoY6zKz7TPG56a9aHm/Navq2BmD6H6wgKcqcuzSDfztC9iNXVUF4p5qX/8hFPB04gMKASZW8os1DhEx+e+D4RbHK2KMPGh2/tSjSYk8djEWM1Y2WZsBtshc7OXKckUYesG24TnOS3YIwUw6TbHTFSak0rDJteqyX3F5DM9CCUnhva2tZvQE2r8Z2MLUwaukeMJeemP6HzqqA4pKZMXqsSfhvsMihM89GtZ56H/KwThjFMY3boASddHBb/grvpgg7Y91bTrexYsrMtYtW67w7ZaeK9fqVKINMw2vxdihZe5SpDtZBJc30u2t99tQSerU3S6niOl8CpMf+JZynX6wFe16MGGq4GmhTrQy/H6xIKcV0YZNhgbhR5YuWyjkdbKsZNeXpI/hGBYBqgXM49rEx+EoVdXmGlRp18g5H/uAYNbHIFsIp4E/EhhNz1K2r6pDvpBMzgA66MpvUQKkiE5VNdgggCjJBVYbChfEtosDGRk5KrrgFUSUW4MBzMoZOwXmn799OJtnma6+Z8t2TjFgvwWSN+OrjfLWPmbmi9LzVxw2QtnDvx1Ho2+4ywbpmhC0mp2XfGoir9cGgl+zznBYdyDwsxugGAjax51UcTJUfCtMeJeFc6F/8Q7XQ63fH70or4Nq8vTZknslsWsg1s+yD6 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:(13230016)(366004)(6512007)(66556008)(26005)(54906003)(5660300002)(6506007)(316002)(186003)(2906002)(31686004)(36756003)(508600001)(6486002)(8936002)(66946007)(86362001)(4326008)(8676002)(6916009)(66476007)(38100700002)(31696002)(2616005)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?tK4GUH7HV039pz1N/hiHuY9id0tI?= =?utf-8?q?Nnr/1dGDnXu52h8tR5MBptwqSSEqNl0eDHwRQCnhjX6skdVPRlzpvVG3E8L0YEnPd?= =?utf-8?q?vRtndCJnkKvKJX658UAkApHeTqaxtko1fNKi4snovUxpjafjxvQ20DnSWm/58N+Wt?= =?utf-8?q?UKkm/oKP7OCVrfdc8yKNpG3Jq8mAxUN1Fd8QMoJsPfFDXn/qBDiw24WYxu5t8sffY?= =?utf-8?q?sQ6SUc3jSoeE4hOXsVZeGr5g15AdcwAlr/Gh8K7FkobmoL4ZG1FmURLMtHHwfEgoz?= =?utf-8?q?yCTZdyb1qXLAsomV+hPt+ssYd1L15WcmmGAs0u+blROB3mX+TMQcFCDtE7ibUxxJD?= =?utf-8?q?LL71y8PPQEKzpwnwT/PsksbSZCWGkG+M1SSncl4q+fDcyWCKd3SYaNC3Bespg/0ah?= =?utf-8?q?UtIHAqjejs5oicCODkJtupmgZGOr7oDDN8iHbryC345gcd+UIxu7FelSiTS6Fausm?= =?utf-8?q?wPgDIKXtGRsmUo1a6DnSyrW9KAd8VAcy/8ll8ousa7c3l4I9wiYHB10hflPoReH7Z?= =?utf-8?q?4RNeJ2gnHcAdOiSjh1eFawNHOe8RVjLLU3Vv5fVvFdK5pHik2jYAoLxcXA+RVmfAg?= =?utf-8?q?/2VehURkumuo5VikDnl82auMSmtNRU8B2jz7LtShzHgxVvdz59x94L/vofXJunpm9?= =?utf-8?q?Vw525MdR7Mut+fCccqXtmL7NLxT3zP+xP17ZPb/1KyIkXJ8CJ0I/VjfwBiN/jpDYD?= =?utf-8?q?8jfDqoKERv/y2conCWRgzsvXbCXiO7wNIf84XPXP9X5Q94d9ZneftcPU+9xKOaxJ9?= =?utf-8?q?Kyd7OfRq4Z+tVOcSwMpiAsqfV8hB+Gd9jBEnI9PFkIwAqZqC9YG3mpZ2EgRsu6D9t?= =?utf-8?q?h4f8rpNcInHQmrtvxOMvGcGhEeo2T201UFEjbpoT6d0CB+w9Jp2kzI/1WfwchFCPu?= =?utf-8?q?bqWOJKIEItayN6HBKrh0xonQ9+o0Fze7Xogl/0AFEJovSrVgTM38KAUMqXbUZGqOs?= =?utf-8?q?5SPp7i5+L6NaspGaefhBPTNtj9lVWUhKHbo8pv7vnExkUwt4+jISvPhaef6ik8wHu?= =?utf-8?q?EzTKlFTu2DaF7v7d0E/Yp0/w3TPaDyp8FY1yq0UhhDBs3icZRxspSrV5zbVxdwH6h?= =?utf-8?q?P9/cpmz1pgUXnn3qZFiLsu/OaQr4aMo5AJBco7EFsIfaGCsHH9Q+Z+KW16s8il4my?= =?utf-8?q?ZYYQJoY9hcaLrvkPzDe+gj5CtP9oWBqcWM+CY1uW5Gug0IzNZvNhSRW6Ki3O3C+du?= =?utf-8?q?TBLZaodkN6j1S7NwdZOrQvL41SPjzPDGEF5U+IMoffQPTDh+jMxkbN38eKqnbbWw4?= =?utf-8?q?o9HMoXwPMqBvQQvoY53fo/MWXGePmSd8IFuk4k3kGiBlqogUopYXF9+eOSGAkmYpt?= =?utf-8?q?Np7tqUzfnG5wnz+g/DnGj/CruWO6gKSGMcoC9gA+s5l/Cn83k8GU+YIHpcJSVOI3K?= =?utf-8?q?+OCo7TIBnYRnYtlw4sHE0C/NFHeaLtUJAWf1o1shKG9z+aEeIrbdeUbau15NY1uQs?= =?utf-8?q?G7jDOCmvEQDF9+Hf5v5EJzE2PzjphWFtaZIymye4Abd3uE/+f9f6XC5QDd33jO1kD?= =?utf-8?q?VS5NAI7nzSZP2ZPExeta1yaZ1cTsG4IHx7H3OpH5ujAEFw0QASenFfJguzWAtkJfk?= =?utf-8?q?mKnpuah5pqYyoSoZSXEhQUwKEsMeus508hFu1HdOc7Uxi+7MZVb8FQnHOSZG7/Ye4?= =?utf-8?q?MVQwtsWk9ZVepvu4wL78J90yZcAPJ0ew=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7da50cf-ece9-4bad-2d56-08da4eba1f48 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 10:30:52.3616 (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: kg9J8dmX9prMY3qcHatrkZtAYJpAtmZNu/Ya0Vj8AG1zupNmBVq2ULGHJH1SNYsEKpxMB6leG0VlH9SbZ+raWA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6876 Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- a/tools/tests/x86_emulator/evex-disp8.c +++ b/tools/tests/x86_emulator/evex-disp8.c @@ -612,8 +612,16 @@ static const struct test avx512_fp16_all INSN(cmpph, , 0f3a, c2, vl, fp16, vl), INSN(cmpsh, f3, 0f3a, c2, el, fp16, el), INSN(comish, , map5, 2f, el, fp16, el), + INSN(cvtpd2ph, 66, map5, 5a, vl, q, vl), + INSN(cvtph2pd, , map5, 5a, vl_4, fp16, vl), + INSN(cvtph2psx, 66, map6, 13, vl_2, fp16, vl), INSN(cvtph2uw, , map5, 7d, vl, fp16, vl), INSN(cvtph2w, 66, map5, 7d, vl, fp16, vl), + INSN(cvtps2phx, 66, map5, 1d, vl, d, vl), + INSN(cvtsd2sh, f2, map5, 5a, el, q, el), + INSN(cvtsh2sd, f3, map5, 5a, el, fp16, el), + INSN(cvtsh2ss, , map6, 13, el, fp16, el), + INSN(cvtss2sh, , map5, 1d, el, d, el), INSN(cvttph2uw, , map5, 7c, vl, fp16, vl), INSN(cvttph2w, 66, map5, 7c, vl, fp16, vl), INSN(cvtuw2ph, f2, map5, 7d, vl, fp16, vl), --- a/tools/tests/x86_emulator/predicates.c +++ b/tools/tests/x86_emulator/predicates.c @@ -2031,6 +2031,8 @@ static const struct evex { }, evex_map5[] = { { { 0x10 }, 2, T, R, pfx_f3, W0, LIG }, /* vmovsh */ { { 0x11 }, 2, T, W, pfx_f3, W0, LIG }, /* vmovsh */ + { { 0x1d }, 2, T, R, pfx_66, W0, Ln }, /* vcvtps2phx */ + { { 0x1d }, 2, T, R, pfx_no, W0, LIG }, /* vcvtss2sh */ { { 0x2e }, 2, T, R, pfx_no, W0, LIG }, /* vucomish */ { { 0x2f }, 2, T, R, pfx_no, W0, LIG }, /* vcomish */ { { 0x51 }, 2, T, R, pfx_no, W0, Ln }, /* vsqrtph */ @@ -2039,6 +2041,10 @@ static const struct evex { { { 0x58 }, 2, T, R, pfx_f3, W0, LIG }, /* vaddsh */ { { 0x59 }, 2, T, R, pfx_no, W0, Ln }, /* vmulph */ { { 0x59 }, 2, T, R, pfx_f3, W0, LIG }, /* vmulsh */ + { { 0x5a }, 2, T, R, pfx_no, W0, Ln }, /* vcvtph2pd */ + { { 0x5a }, 2, T, R, pfx_66, W1, Ln }, /* vcvtpd2ph */ + { { 0x5a }, 2, T, R, pfx_f3, W0, LIG }, /* vcvtsh2sd */ + { { 0x5a }, 2, T, R, pfx_f2, W1, LIG }, /* vcvtsd2sh */ { { 0x5c }, 2, T, R, pfx_no, W0, Ln }, /* vsubph */ { { 0x5c }, 2, T, R, pfx_f3, W0, LIG }, /* vsubsh */ { { 0x5d }, 2, T, R, pfx_no, W0, Ln }, /* vminph */ @@ -2056,6 +2062,8 @@ static const struct evex { { { 0x7d }, 2, T, R, pfx_f2, W0, Ln }, /* vcvtuwph */ { { 0x7e }, 2, T, W, pfx_66, WIG, L0 }, /* vmovw */ }, evex_map6[] = { + { { 0x13 }, 2, T, R, pfx_66, W0, Ln }, /* vcvtph2psx */ + { { 0x13 }, 2, T, R, pfx_no, W0, LIG }, /* vcvtsh2ss */ { { 0x2c }, 2, T, R, pfx_66, W0, Ln }, /* vscalefph */ { { 0x2d }, 2, T, R, pfx_66, W0, LIG }, /* vscalefsh */ { { 0x42 }, 2, T, R, pfx_66, W0, Ln }, /* vgetexpph */ --- a/xen/arch/x86/x86_emulate/decode.c +++ b/xen/arch/x86/x86_emulate/decode.c @@ -224,7 +224,9 @@ static const struct twobyte_table { [0x14 ... 0x15] = { DstImplicit|SrcMem|ModRM, simd_packed_fp, d8s_vl }, [0x16] = { DstImplicit|SrcMem|ModRM|Mov, simd_other, 3 }, [0x17] = { DstMem|SrcImplicit|ModRM|Mov, simd_other, 3 }, - [0x18 ... 0x1f] = { ImplicitOps|ModRM }, + [0x18 ... 0x1c] = { ImplicitOps|ModRM }, + [0x1d] = { ImplicitOps|ModRM, simd_none, d8s_vl }, + [0x1e ... 0x1f] = { ImplicitOps|ModRM }, [0x20 ... 0x21] = { DstMem|SrcImplicit|ModRM }, [0x22 ... 0x23] = { DstImplicit|SrcMem|ModRM }, [0x28] = { DstImplicit|SrcMem|ModRM|Mov, simd_packed_fp, d8s_vl }, @@ -1474,6 +1476,19 @@ int x86emul_decode(struct x86_emulate_st s->fp16 = true; break; + case 0x1d: /* vcvtps2phx / vcvtss2sh */ + if ( s->evex.pfx & VEX_PREFIX_SCALAR_MASK ) + break; + d = DstReg | SrcMem; + if ( s->evex.pfx & VEX_PREFIX_DOUBLE_MASK ) + { + s->simd_size = simd_packed_fp; + d |= TwoOp; + } + else + s->simd_size = simd_scalar_vexw; + break; + case 0x2e: case 0x2f: /* v{,u}comish */ if ( !s->evex.pfx ) s->fp16 = true; @@ -1497,6 +1512,15 @@ int x86emul_decode(struct x86_emulate_st } disp8scale = decode_disp8scale(twobyte_table[b].d8s, s); + + switch ( b ) + { + case 0x5a: /* vcvtph2pd needs special casing */ + if ( !s->evex.pfx && !s->evex.brs ) + disp8scale -= 2; + break; + } + break; case ext_map6: @@ -1513,6 +1537,17 @@ int x86emul_decode(struct x86_emulate_st s->fp16 = true; break; + case 0x13: /* vcvtph2psx / vcvtsh2ss */ + if ( s->evex.pfx & VEX_PREFIX_SCALAR_MASK ) + break; + s->fp16 = true; + if ( !(s->evex.pfx & VEX_PREFIX_DOUBLE_MASK) ) + { + s->simd_size = simd_scalar_vexw; + d &= ~TwoOp; + } + break; + case 0x56: case 0x57: /* vf{,c}maddc{p,s}h */ case 0xd6: case 0xd7: /* vf{,c}mulc{p,s}h */ break; --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -7780,14 +7780,25 @@ x86_emulate( generate_exception_if(evex.w, EXC_UD); goto avx512f_all_fp; + CASE_SIMD_ALL_FP(_EVEX, 5, 0x5a): /* vcvtp{h,d}2p{h,d} [xyz]mm/mem,[xyz]mm{k} */ + /* vcvts{h,d}2s{h,d} xmm/mem,xmm,xmm{k} */ + host_and_vcpu_must_have(avx512_fp16); + if ( vex.pfx & VEX_PREFIX_SCALAR_MASK ) + d &= ~TwoOp; + op_bytes = 2 << (((evex.pfx & VEX_PREFIX_SCALAR_MASK) ? 0 : 1 + evex.lr) + + 2 * evex.w); + goto avx512f_all_fp; + case X86EMUL_OPC_EVEX (5, 0x7c): /* vcvttph2uw [xyz]mm/mem,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_66(5, 0x7c): /* vcvttph2w [xyz]mm/mem,[xyz]mm{k} */ case X86EMUL_OPC_EVEX (5, 0x7d): /* vcvtph2uw [xyz]mm/mem,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_66(5, 0x7d): /* vcvtph2w [xyz]mm/mem,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_F3(5, 0x7d): /* vcvtw2ph [xyz]mm/mem,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_F2(5, 0x7d): /* vcvtuw2ph [xyz]mm/mem,[xyz]mm{k} */ - op_bytes = 16 << evex.lr; + case X86EMUL_OPC_EVEX_66(6, 0x13): /* vcvtph2psx [xy]mm/mem,[xyz]mm{k} */ + op_bytes = 8 << ((ext == ext_map5) + evex.lr); /* fall through */ + case X86EMUL_OPC_EVEX_66(5, 0x1d): /* vcvtps2phx [xyz]mm/mem,[xy]mm{k} */ case X86EMUL_OPC_EVEX_66(6, 0x2c): /* vscalefph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_66(6, 0x42): /* vgetexpph [xyz]mm/mem,[xyz]mm{k} */ case X86EMUL_OPC_EVEX_66(6, 0x96): /* vfmaddsub132ph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */ @@ -7814,6 +7825,8 @@ x86_emulate( avx512_vlen_check(false); goto simd_zmm; + case X86EMUL_OPC_EVEX(5, 0x1d): /* vcvtss2sh xmm/mem,xmm,xmm{k} */ + case X86EMUL_OPC_EVEX(6, 0x13): /* vcvtsh2ss xmm/mem,xmm,xmm{k} */ case X86EMUL_OPC_EVEX_66(6, 0x2d): /* vscalefsh xmm/m16,xmm,xmm{k} */ case X86EMUL_OPC_EVEX_66(6, 0x43): /* vgetexpsh xmm/m16,xmm,xmm{k} */ case X86EMUL_OPC_EVEX_66(6, 0x99): /* vfmadd132sh xmm/m16,xmm,xmm{k} */