From: Dmitry Zhurikhin <zhur@ispras.ru>
To: Juha.Riihimaki@nokia.com
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] QEMU state of ARM NEON support.
Date: Thu, 25 Mar 2010 13:27:47 +0300 [thread overview]
Message-ID: <4BAB3AA3.5030808@ispras.ru> (raw)
In-Reply-To: <372ED49D-DF43-4E6C-AA3D-F4DA95746981@nokia.com>
Juha.Riihimaki@nokia.com wrote:
> Hi,
>
> Thanks for the testing. I fixed all of the issues found by your test programs except:
Great! This is very good news. Please look at my comments below regarding
specific issues.
> - vmull.p8 is not implemented in QEMU.
So seems this is now the only NEON instruction variant left that QEMU doesn't
handle.
> - vrecpe/vrsqrte returns exact reciprocal/root in QEMU instead of estimate.
A simple algorithm used in hardware is described in the ARMv7 ARM* (see function
'recip_estimate' on page A2-59) but I don't think this is a big issue as exact
computations may be even better.
> - Using subnormal floating point input values yields wrong results (this is visible in your vceq/vcgt/vcle tests against zero), I guess this would need to be corrected in the softfloat library which QEMU uses.
This is actually a "Flush-to-zero" feature which is always on for NEON
instructions (see FZ field description of FPSCR in A2.6.4 chapter of ARMv7 ARM).
Before attempting to perform an action on the floating-point data NEON first
checks if it is close to zero (zero exponent, bits 23-30 for F32, see FPUnpack
function at page A2-48) and behaves as if it was zero if the check succeeds.
> - vqdmlsl yields different results for some specific input values, however I think QEMU is producing correct results. For example, 1431655765-(2*-32768*-32768)=-715827883 but your reference hardware results say it should be -715827882.
From what I understand hardware gets such result because saturation occurs on
the (2*-32768*-32768) step. The result is not 0x80000000 as expected but
because of overflow is set as the largest 32-bit signed integer 0x7FFFFFFF. It
seems that QEMU just doesn't perform saturation (in this particular case at least).
> Anyway, many thanks for the testing you did and especially for posting the test programs as well. All these fixes along with many others are now in the Maemo QEMU repository. We'll try to make a new set of ARM emulation patches against upstream QEMU in the near future.
We'll be waiting for this. Thanks a lot for your work.
> Regards,
> Juha
* I am referring to the "ARM Architecture Reference Manual, ARMv7-A and ARMv7-R
edition" version ARM_2009_Q3.
Regards,
Dmitry
next prev parent reply other threads:[~2010-03-25 10:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-22 13:43 [Qemu-devel] QEMU state of ARM NEON support Dmitry Zhurikhin
2010-03-25 7:52 ` Juha.Riihimaki
2010-03-25 10:27 ` Dmitry Zhurikhin [this message]
2010-03-25 11:04 ` Juha.Riihimaki
2010-03-25 14:00 ` WIP flush-to-zero patch [was: Re: [Qemu-devel] QEMU state of ARM NEON support.] Nathan Froyd
2010-03-25 16:11 ` Richard Henderson
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=4BAB3AA3.5030808@ispras.ru \
--to=zhur@ispras.ru \
--cc=Juha.Riihimaki@nokia.com \
--cc=qemu-devel@nongnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.