qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] QEMU state of ARM NEON support.


From: Juha.Riihimaki
Subject: Re: [Qemu-devel] QEMU state of ARM NEON support.
Date: Thu, 25 Mar 2010 08:52:39 +0100

Hi,

Thanks for the testing. I fixed all of the issues found by your test programs 
except:

- vmull.p8 is not implemented in QEMU.

- vrecpe/vrsqrte returns exact reciprocal/root in QEMU instead of estimate.

- 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.

- 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.

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.


Regards,
Juha

On Mar 22, 2010, at 15:43, ext Dmitry Zhurikhin wrote:

> Hello.  We made a small experiment to analyze QEMU state of NEON support.  We 
> took our tests from Valgrind that we wrote to test support for all NEON 
> instructions and ran them inside of QEMU.  I am attaching the output files 
> from 
> trunk QEMU as well as reference file showing what output should be (taken 
> from 
> the real test board).  We find the results interesting.  Overall NEON support 
> is 
> great.  Here is a list of what problems we've seen so far:
>   - To start with, QEMU translator doesn't support at all 128-bit polynomial 
> VMULL instruction and VSLI and VSRI instructions.  Though there are two 
> patches 
> in the mailing list to address missing VSLI and VSRI instructions problem.  
> One 
> patch adds support only for VSLI instruction.  The other adds support for 
> both 
> of them but its emulation of VSLI instruction is incorrect.
>   - QEMU also raises 'Illegal instruction' interrupt on some kinds of VCVT 
> instructions and converts all values incorrectly.  Seems like QEMU recognizes 
> VCVT as another instruction.
>   - Many instructions are emulated (partially) incorrectly.  They include 
> VQSHL(U), V(Q)RSHL, VRSHR, V(R)SRA, VMUL, VMLA, VMLS, VMULL, VMLAL, VMLSL, 
> VZIP, 
> 128-bit VUZP, 64-bit V(Q)(R)SHR(U)N, VQ(R)DMUL(L,H), VQDMLSL, VQDMLAL, VSHLL, 
> VRECPE and VRSQRT(E,S).
>   - Encoding of integer constants with cmode 1101 is processed incorrectly 
> (see 
> VMOV or VMVN).
>   - Flush-to-zero is not performed before executing floating-point NEON 
> instructions as it should be (which results in incorrect VCGT and VCLE 
> instructions result).
>   - Saturation flag is not set.
>   - QEMU reports "Internal resource leak"s for some instructions.
> 
> Hope this information will be helpful.
> 
> 
>     Regards,
>     Dmitry
> <qemu-neon-test.tar.bz2>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]