Trying to reduce memory usage in my application running on an ARM Cortex-A5
(Vybrid VF6 specifically) I converted a large array of floats to __fp16,
and compiled with -mfp16-format=ieee.  Seems to work flawlessly (the lost
precision is undetectable to my ear), but when I run it through valgrind it
fails:
    disInstr(arm): unhandled instruction: 0xEEF27A67
                 cond=14(0xE) 27:20=239(0xEF) 4:4=0 3:0=7(0x7)
Assembly output of the instruction in question is "vcvtb.f32.f16 s15, s15",
convert from half-precision floating point to single-precision.
Does Valgrind simply not support half-precision floating-point conversion?
 Should I raise this as a bug or accept my fate?  Or am I doing something
wrong?
Here's the basic example I compile and run through valgrind-3.9.0 (specific
tool doesn't make a difference)
    #include <stdio.h>
    int main()
    {
        __fp16 foo = 1.1f;
        float bar;
        bar = (float)foo; /* Failed instruction vcvtb.f32.f16 here */
        bar *= 2.1f;
        printf("foo = %f, bar = %f\n", foo, bar);
    }

Since I have literally found absolutely nothing about valgrind's support of
half-precision floating point I'm left to assume it is entirely
non-existent with no current interest in changing that, is that correct?

Thanks for any advice.
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to