qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <rth@twiddle.net>
To: Xin Tong <trent.tong@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] Intel AVX instructions
Date: Wed, 22 Jan 2014 12:19:27 -0800	[thread overview]
Message-ID: <52E027CF.3030105@twiddle.net> (raw)
In-Reply-To: <CA+JLOivb8Q-Ym_vDxOw38pgNGoxjpYAkYnB46MLCYtM0d=-8Sg@mail.gmail.com>

On 01/22/2014 11:35 AM, Xin Tong wrote:
> It seems that BOCHS have AVX instructions support in interpreter. I am
> thinking an easy/reliable way to do this would be generate helper
> calls to emulate every AVX instruction and follow how BOCHS emulates
> them. Then depending on the expected frequency and difficulties, one
> can decide whether to move some of the instructions into TCG JITted
> code ?
> 
> Also, it would be desirable to use the MMX/SSE structures and
> functions that already exist in QEMU target-i386/translate.c

The way you should start is by re-using the existing SSE helpers.

There are several things one must consider with AVX:

  (1) Old SSE insns.  These do not modify bits 128 and higher.
  (2) SSE insns encoded with VEX.  These zero bits 128 and higher.
  (3) AVX insns.  These (generally) modify all 256 bits.

Case 1 can be handled by doing nothing with the existing helpers.

Case 2 can be handled by using the existing helper, followed by a couple of
stores to zero the high part.

Case 3 can, with only a few exceptions, be handled by using the existing helper
twice on the two halves.  Thankfully the existing helpers work with host
pointers rather than register numbers.

That will cover at least 90% of the AVX2 instruction set.


r~

  parent reply	other threads:[~2014-01-22 20:19 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-22 16:27 [Qemu-devel] Intel AVX instructions Xin Tong
2014-01-22 17:35 ` Paolo Bonzini
2014-01-22 19:35   ` Xin Tong
2014-01-22 20:06     ` Peter Maydell
2014-01-22 20:19     ` Richard Henderson [this message]
2014-01-22 21:57       ` Xin Tong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52E027CF.3030105@twiddle.net \
    --to=rth@twiddle.net \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=trent.tong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).