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

Re: [PATCH 10/11] x86emul: handle AVX512-FP16 conversion to/from (packed) int{32,64} insns


  • To: Jan Beulich <jbeulich@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>
  • Date: Wed, 10 Aug 2022 19:09:49 +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=luLz+fQFEs6jAL5QSCxGGNL2p/GBb1TxcnGWrjpqBHk=; b=Q9MWbKAAb7D6drFp832tmtHXtb1nzVPK4KC6ifTxAXRW0furlxg13mEZ2HeWC39RW+n7qPlyDV3HnEokz/H2SCPU+6eXZUS0nnZng4affxZv1zwy49ARg0oP273O0JwDmwziX16rR/YfADozAQiSWA1kNDGD3G8rio6DBEK94P560mijrr22jU2unO8zMEc2mdaycKgogyG/BWv97GacJRLn5393VWMumD4QhL8FW3J4nGikcSMgb8wmRIyhWhF0DlulKIqKqbf6Ex0kq33RbZMB+D6pU7Wtcyvi5+tCJwb5yHW2/Dqjum1mMozCrF6vH02Ff/cIv3YUVlr49mXLUw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DkRWMGtGKxF8N5+PEBwiLYBTrfFB7JHHTGDTrMF5m1WX6JEzZUMpysM23u/W4YFt6mmBIjWvfCOBOsNz+D883ZTCTUIJZaKPwQgkvqQqUqXANK+xGWbtvDjkfoCOHYIULi8h86CNKBfvTJO/QRwiIhAFfFrGVGQhjWCSKouS3tglvZkmo4OP/ocSzsKQiJd9kCNZQQ96908yKm41wpRlBWAtaArmiDDUl43QABxDetC0cwRYyii60wTkTdQ1suxMxAUCAkbp/RHOIEQcvxTLJqGgEV9xphuHT3CfvNnZNwe5BS3avySNY4njJgIR0p8ScN2aZGN21T+cTQ/SPJXCKw==
  • 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 19:09:58 +0000
  • Ironport-data: A9a23:m8CkqaBvDGrGSRVW/zfiw5YqxClBgxIJ4kV8jS/XYbTApG8jhWEHz 2oWXm2FMqrfambwLo1yaYy3oRtTv8OBz9BhQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA xA2M4GYRCwMZiaA4E3ratANlFEkvYmQXL3wFeXYDS54QA5gWU8JhAlq3uU0meaEu/Dga++2k Y608pa31GONgWYuaDpEsvrb83uDgdyp0N8mlg1mDRx0lAe2e0k9VPo3Oay3Jn3kdYhYdsbSq zHrlezREsvxpn/BO/v9+lrJWhRiro36ZGBivkF+Sam66iWukwRpukoN2FjwXm8M49mBt4gZJ NygLvVcQy9xVkHHsLx1vxW1j0iSlECJkVPKCSHXjCCd86HJW3+20shCMBsqAYIJo/RLQmcW8 PA7DS9YO3hvh8ruqF66Ys9Fo5x5aeXOZ8YYsHwmyizFB/E7R5yFW7/N+dJTwDY3gIZJAOraY M0aLzFoaXwsYTUWYgtRVM14wbnu2iGXnz5w8Tp5oYIe5WTJwRM3+7/qKNfPIfSBRNlPn1ber WXDl4j8Kk5FZIXDl2Tcmp6qrsPFmWTLAbMKLqSx2+Vxh0Wr7C8OGiRDADNXptH80CZSQel3K UYZ5y4vpqga71GwQ5/2WBjQiG6JuFsQVsRdF8U+6RqR0ezE7gCBHG8GQzVdLts8u6ceWjgCx lKP2dTzClRSXKa9THuc8vKYqGi0MC1Nd2saP3dYFU0C/sXpp5w1glTXVNF/HaWpj9rzXzbt3 zSNqyt4jLIW5SIW65iGEZn8q2rEjvD0osQdvG07gkrNAttFWbOY
  • Ironport-hdrordr: A9a23:pnOFkqtHVrKL3A2OAPyJYAa97skCXoAji2hC6mlwRA09TyXGra 2TdaUgvyMc1gx7ZJh5o6H6BEGBKUmslqKceeEqTPqftXrdyRGVxeZZnMffKlzbamfDH4tmuZ uIHJIOb+EYYWIasS++2njBLz9C+qjJzEnLv5a5854Fd2gDBM9dBkVCe3+m+yZNNWt77O8CZf 6hD7181l+dkBosDviTNz0gZazuttfLnJXpbVovAAMm0hCHiXeF+aP3CB+R2zYZSndqza05+W bIvgTl7uH72svLiyP05iv21dB7idHhwtxMCIiljdUUECzljkKFdZlsQLqLuREyuaWK5EwxmN fBjh88N4BY6m/XfEuyvRzxsjOQngoG2jvH8xu1kHHjqcv2SHYREMxan79UdRPf9g4JoMx8+L gj5RPbi7NnSTf72Ajt7dnBUB9n0mCup2A5rOIVh3tDFaMDdb5qq5AF9k89KuZDIMu60vFjLA BdNrCa2B9kSyLdU5kfhBg3/DWYZAV2Iv5BeDlbhiXa6UkMoJkz9Tpk+CVWpAZ9yHt6cegF2w 2MCNUXqFkFJPVmEp5VFaMPR9C6BXfKRg+JOGWOIU7/HKVCIH7VrYXriY9Frd1CVaZ4u6faoq 6xJm9wpCo3YQbjGMeO1JpE/lTER3i8Ry3kzoVb64JisrPxSbL3OWnbIWpe2PeIsrEaGInWSv yzMJVZD7vqKnbvA59A20n7V4NJIXcTXcUJspIwWk6IoMjMNor239arOMr7Nf7oC3IpS2n/Cn wMUHz6I9hB9FmiXjvijB3YSxrWCzjCFFJLYd3nFsQoufgw39d3w3koYHyCl7K2ACwHtLAqd0 1jJ76imr+npACNjBT101k=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHYgKMWKPihk5cLF0yn90+JaN8SLK2o2D+A
  • Thread-topic: [PATCH 10/11] x86emul: handle AVX512-FP16 conversion to/from (packed) int{32,64} insns

On 15/06/2022 11:31, Jan Beulich wrote:
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> --- a/xen/arch/x86/x86_emulate/decode.c
> +++ b/xen/arch/x86/x86_emulate/decode.c
> @@ -1489,12 +1489,25 @@ int x86emul_decode(struct x86_emulate_st
>                      s->simd_size = simd_scalar_vexw;
>                  break;
>  
> +            case 0x2a: /* vcvtsi2sh */
> +                break;
> +
> +            case 0x2c: case 0x2d: /* vcvt{,t}sh2si */
> +                if ( s->evex.pfx == vex_f3 )
> +                    s->fp16 = true;
> +                break;
> +
>              case 0x2e: case 0x2f: /* v{,u}comish */
>                  if ( !s->evex.pfx )
>                      s->fp16 = true;
>                  s->simd_size = simd_none;
>                  break;
>  
> +            case 0x5b: /* vcvt{d,q}q2ph, vcvt{,t}ph2dq */
> +                if ( s->evex.pfx && s->evex.pfx != vex_f2 )
> +                    s->fp16 = true;
> +                break;
> +
>              case 0x6e: /* vmovw r/m16, xmm */
>                  d = (d & ~SrcMask) | SrcMem16;
>                  /* fall through */
> @@ -1504,6 +1517,17 @@ int x86emul_decode(struct x86_emulate_st
>                  s->simd_size = simd_none;
>                  break;
>  
> +            case 0x78: case 0x79: /* vcvt{,t}ph2u{d,q}q, vcvt{,t}sh2usi */
> +                if ( s->evex.pfx != vex_f2 )
> +                    s->fp16 = true;
> +                break;
> +
> +            case 0x7a: /* vcvttph2qq, vcvtu{d,q}q2ph */
> +            case 0x7b: /* vcvtph2qq, vcvtusi2sh */
> +                if ( s->evex.pfx == vex_66 )
> +                    s->fp16 = true;
> +                break;
> +
>              case 0x7c: /* vcvttph2{,u}w */
>              case 0x7d: /* vcvtph2{,u}w / vcvt{,u}w2ph */
>                  d = DstReg | SrcMem | TwoOp;
> @@ -1515,10 +1539,34 @@ int x86emul_decode(struct x86_emulate_st
>  
>              switch ( b )
>              {
> +            case 0x78:
> +            case 0x79:
> +                /* vcvt{,t}ph2u{d,q}q need special casing */
> +                if ( s->evex.pfx <= vex_66 )
> +                {
> +                    if ( !s->evex.brs )
> +                        disp8scale -= 1 + (s->evex.pfx == vex_66);
> +                    break;
> +                }
> +                /* vcvt{,t}sh2usi needs special casing: fall through */
> +            case 0x2c: case 0x2d: /* vcvt{,t}sh2si need special casing */
> +                disp8scale = 1;
> +                break;
> +
>              case 0x5a: /* vcvtph2pd needs special casing */
>                  if ( !s->evex.pfx && !s->evex.brs )
>                      disp8scale -= 2;
>                  break;
> +
> +            case 0x5b: /* vcvt{,t}ph2dq need special casing */
> +                if ( s->evex.pfx && !s->evex.brs )
> +                    --disp8scale;
> +                break;
> +
> +            case 0x7a: case 0x7b: /* vcvt{,t}ph2qq need special casing */
> +                if ( s->evex.pfx == vex_66 && !s->evex.brs )
> +                    disp8scale = s->evex.brs ? 1 : 2 + s->evex.lr;
> +                break;
>              }
>  
>              break;

Perhaps here, in terms of overriding...

~Andrew



 


Rackspace

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