This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

VFP in Wince 6.0

Hi,

I've read about the wiki page talking about some FP error when enabled the VFP in Wince 6.

However, the performance is really bad without enabled the VFP.

Would you please tell me which certain FP arithmetic operation will create errors?

 

I'd tested the VFP with Wince 6 R3 on OMAP 3530, but I can't find any errors.

Thus, I want to know what will cause me errors beforehand.

 

Thank for your help.

Richard

  • We have seen failures in some CETK tests and graphics demos. Specifically if you write a small routine playing around with float to integer truncation you may be able to see the problem

     

    Atul

  • Hello, Atul,

    What do you mean float to integer truncation?

    Is that some kind of casting from float to integer?

     

    I just tested with the following loop.

        double test = 0.0;
        for (int i=0; i<50000; i++)
        {
            test = tan(cos(3.4578236482) + sin(83.9374658) / asin(0.123)) * log(36.123);
            test = (int)log(fabs(test)) * (int)pow(fabs(test), 0.578);
        }

    But I don't get any errors about that.

    Thank you very much,

    Richard

  • And did you get expected results? Try something simple:

     

    double myDoubleA = 48.4;

    double myDoubleB = 48.7;

     

    int myIntA = (int) myDoubleA;

    int myIntB - (int) myDoubleB;

    Run this with and without VFP and see what values you get for integer variables.

     

    This is just one example. As I said, we have seen failures in some CETK tests and in 1 Graphics demo (others work fine) when we had enabled VFP

    Atul

  • Thanks Atul.

    I can see that the result is different.

    (VFP disabled) myIntA = 48
    (VFP disabled) myIntB = 48

    (VFP enabled) myIntA = 48
    (VFP enabled) myIntB = 49

    For the CETK tests, I got 4 fails running with the DirectDraw Test after enabled the VFP.
    But, as it is a minor fault, I would just ignore it.

    Would you give me more examples of the FP arithmetic operation error?
    Or is there any other FP arithmetic operation will cause errors?
    I would like to know all of the errors because the performance of floating calculation is more important for me.

    Thanks again.

    Richard

  • I thought the main issue was that the NEON and VFP registers were not stored and restored correctly on context switches. If that is the case then I would expect unpredictable random errors across the board. There have been a few posting on this issue.

    I too would like to see this feature (VFP) working under CE 6 (I know it works under CE7). I know there is not enough registers allocated and you technically can not recompile the MS source but I thought there there was a QFE awhile back that might have address this issue. I could be wrong. This would be a common problem for all ARM processors that use this core, not just TI's. I have seen other CE6 BSPs claim a working fix but I do not know the details.

  • Sorry we don't have a consolidated list of all possible errors. We provide generic BSP to cater to a wide community and therefore we disabled VFP. You can certainly enable it on your platform if it works for all scenarios/applications you are targeting

    thanks

    Atul

  • David

    Regarding your question about NEON and VFP, MSFT has provided a fix for saving/restoring co-proc registers only. AFAIK, they havent added support for VFPv3 in the CE6 kernel. if you have other information, please let us know.

     

    -Madhvi

  • Some more background:

    http://www.mpc-data.co.uk/docs/MPC-WP02VectorFloatingPointsupportforWindowsEmbeddedCE60.pdf

     

  • Looks like this implementation was done for the i.mx31 which is probably a VFPv2.

    I understand the VFPv3 (A8) has the added register thus we are out of luck.