[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 02/11] x86emul: handle AVX512-FP16 insns encoded in 0f3a opcode map


  • To: Jan Beulich <jbeulich@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>
  • Date: Wed, 10 Aug 2022 17:03:38 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • 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=QgumIHl6F8csl+ZdYQl1PuQRY54TLt22Dug+yQjzVOw=; b=IUxeV4BuKmpSVfz6kT6ZX3mOYs7gPnvnqAxI1FtAjO4YBNoF5F5/KqNr5z91qxCu5zIR92l2W5w21Bf1fwiGsuOeKJlRDgBw31YfBG34Aa7+vbX+nn9zDcvSE9Dlvm9GUyUjJu3BbC47zHQA9z1I9YnKfrwF4s8S2uvrZxrqRWx9/hGPpznlejs05CyipqVD5WnipDETCWzq338ALveSfeHfcdhBIAWN9X25DdUWCKYMfEfHVnBINxqzuz56AZCoREu2YeRbK3b/0b6WRdYHNNdIlfauiLZ1AKNbFnd0tpgadFB/tC/OKn+edHeRdRMqVtypskCrfS2kL3fTv+xSPg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jl3BJZ1p/wPu3tMTvXJjl0flx43sq2VnBUdKJVLsukaHHW/Y0R6vf/X9xJ4UIaUyqkrSG7K8496oYIUpAFYwOIGLqZTK3GxK4vvIvWpS1v4yyotDAgNaEd24zbBqgtMv6QQbRKV53eBeYj9BRtBpuemhPHHvjCYnSgWc6JC7l9CbDR/470GEyt3SoBaOHV5pNBJHepYfDxlcj1KnFHrMhq/bsG+I8J6BGPUvO9XEnfewtNbN7/gDlFA2vCVeJNSK73JEbpIv20livNI4ajXdNBIytjlhQHMiKiG6xvB8kTZSyjxJu4i+W4f2iI3ndgM4z1sfXDuloQhCwJZ8lUxYLg==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Wei Liu <wl@xxxxxxx>, Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Delivery-date: Wed, 10 Aug 2022 17:03:53 +0000
  • Ironport-data: A9a23:K7mmfaLlMytledfxFE+RyJQlxSXFcZb7ZxGr2PjKsXjdYENS0DRWn WYaUWrVP6neZmamKNFxbI3no0tTscWHzNEyQQFlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokf0/0vraP65xZVF/fngbqLmD+LZMTxGSwZhSSMw4TpugOd8iYNz6TSDK1rlV eja/ouOYzdJ5xYuajhOs/La8Es11BjPkGhwUmIWNKgjUGD2zxH5PLpHTYmtIn3xRJVjH+LSb 44vG5ngows1Vz90Yj+Uuu6Tnn8iG9Y+DiDX4pZiYICwgwAqm8AH+v1T2Mzwy6tgo27hc9hZk L2hvHErIOsjFvWkdO81C3G0H8ziVEHvFXCuzXWX6KSuI0P6n3TE4Md1Ulw9GsoiwLhGWFBV5 PJDKiFTR0XW7w626OrTpuhEoO0GdZGuFqVA/3ZqwHfeEOosRo3FT+PS/9hE0Twsh8dIW/HDe 84ebjkpZxPFC/FNEg5PVNRiw6H33j+mK2AwRFG9/MLb50D6ygBr3aerG93SYtGQHu1en1qCp 3KA9GP8av0fHIPAmWLeqCL27gPJtX39V5I/LKWzzdtzsWGtm1BNVxRMeFTu9JFVjWb7AbqzM Xc8+CAjsKwz/0yDVcTmUluzp3vslg4RXZ9cHvM37CmJy7HI+ECJC24cVDlDZdc68sgsSlQCy Vuhj97vQzt1v9WopWm1876VqXa4P3cTJGpbPSscF1Jdvp/kvZ05iQ/JQpB7Cqmpg9bpGDb2h TeXsCw5gLZVhskOv0mmwW36b/uXjsChZmYICs//BApJMisRiFaZWrGV
  • Ironport-hdrordr: A9a23:y6wRUangxkHZcJ1pugpYqLOWRSnpDfMEiWdD5ihNYBxZY6Wkfp +V8cjzhCWftN9OYhodcIi7SdK9qXO1z+8X3WGIVY3SETUOy1HYVr2KirGSjwEIeheOvNK1sJ 0NT0EQMqyWMbEXt6fHCUyDYq4dKbq8ge+VbIXlvhFQpGhRAskOgTuRSDzra3GeLzM2Z6bRYa Dsgvav0ADQHEj/AP7aOlA1G8z44/HbnpPvZhALQzYh9Qm1lDutrJLqDhSC2R8acjVXhZMv63 LMnQDV7riq96jT8G6c60bjq7Bt3PfxwNpKA8KBzuATNzXXkw6tIKhxRrGYuzgxgee3rHInis PFrRsMN9l6r1nRYma2ix3w3BSI6kdh11bSjXujxVfzq83wQzw3T+Bbg5hCTxff4008+Plhza NixQuixtlqJCKFuB64y8nDVhlsmEbxi2Eli/Qvg3tWVpZbQKNNrLYY4FheHP47bWDHAcEcYa xT5fPnlbFrmGChHjbkV65UsYWRt0EIb1O7q445y5SoOnZt7StEJgAjtbEidz87he4Aot9/lq T52+1T5c9zpoV9V9MDOM4RBcSwEWDDWhTKLSabJknmDrgOPzbXp4fw+6hd3pDiRHUk9upEpH 36aiIviUciP0b1TcGe1pxC9R7ABG27QDT208lbo5x0oKf1SrbnOTCKDAlGqbrqn9wPRsnAH/ qjMpNfBPHuaWPoBIZSxgX7H51fM2MXXsEZsssyH1iOvsXIIIv3sfGzSoeaGJP9VTI/Hm/vCH oKWzb+YM1G80CwQ3f9xAPcXnv8E3aPia6Y0JKqitT75LJ9RrGk6DJl+GhRzvv7WgFqo+gxYF Z0Jq/hn+eyuXS2lFy4nVlUBg==
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHYgKKgfUHb/QlOR0ydMqlnSzGqYK2otP6A
  • Thread-topic: [PATCH 02/11] x86emul: handle AVX512-FP16 insns encoded in 0f3a opcode map

On 15/06/2022 11:27, Jan Beulich wrote:
> In order to re-use (also in subsequent patches) existing code and tables
> as much as possible, simply introduce a new boolean field in emulator
> state indicating whether an insn is one with a half-precision source.
> Everything else then follows "naturally".

This is slightly misleading.  What you mean is it has an FP16 source, I
think?

There are non-FP16 instructions which have half-precision inputs, like
the F16C group.

> --- a/tools/tests/x86_emulator/x86-emulate.h
> +++ b/tools/tests/x86_emulator/x86-emulate.h
> @@ -182,6 +182,7 @@ void wrpkru(unsigned int val);
>  #define cpu_has_avx512_4fmaps (cp.feat.avx512_4fmaps && xcr0_mask(0xe6))
>  #define cpu_has_avx512_vp2intersect (cp.feat.avx512_vp2intersect && 
> xcr0_mask(0xe6))
>  #define cpu_has_serialize  cp.feat.serialize
> +#define cpu_has_avx512_fp16 (cp.feat.avx512_fp16 && xcr0_mask(0xe6))
>  #define cpu_has_avx_vnni   (cp.feat.avx_vnni && xcr0_mask(6))
>  #define cpu_has_avx512_bf16 (cp.feat.avx512_bf16 && xcr0_mask(0xe6))
>  
> --- a/xen/arch/x86/x86_emulate/decode.c
> +++ b/xen/arch/x86/x86_emulate/decode.c
> @@ -518,6 +518,7 @@ static const struct ext0f3a_table {
>      [0x7a ... 0x7b] = { .simd_size = simd_scalar_opc, .four_op = 1 },
>      [0x7c ... 0x7d] = { .simd_size = simd_packed_fp, .four_op = 1 },
>      [0x7e ... 0x7f] = { .simd_size = simd_scalar_opc, .four_op = 1 },
> +    [0xc2] = { .simd_size = simd_any_fp, .d8s = d8s_vl },

This is a new instruction, isn't it?

~Andrew

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.