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