Koen's right gcc vectorization is terrible.

You don't need to build the Angstrom image with the Neon enabled to use Neon instructions in your programs. Build Angstrom with the standard gcc compiler options. Then, when you compile your programs for the Neon, reference the Angstrom compiler, but add the -mfpu=neon -mfloat-abi=softfp flags to the compiler.

I recommend staying with -mfloat-abi=softfp. This flag controls how floating point data is passed to subroutines, so it won't effect performance except on the entrance/exit of these routines. I have seen multiple inquires made on the CodeSourcery-Arm alias dealing with the -mfloat-abi=hard option. It doesn't work in CodeSourcery-Lite, which is basically GNU gcc. They talk about special premium libraries being needed to make it functional.

To use the Neon effectively, programs need to be structured specifically for the Neon. I recommend either using the Neon Intrinsics or inserting Neon assembler instructions into the gcc program. The intrinsics sometimes generate extra vmov instructions and have a have difficulty updating in-place (e.g. matrix transpose without using additional work variables).

To program effectively in gcc assembly you will need to use some undocumented gcc constraints (see http://hardwarebug.org/2010/07/06/arm-inline-asm-secrets/).

Regards,
Bob Feretich

On 2/20/2011 3:00 AM, [email protected] wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 20-02-11 17:05, Jonathan Wilson wrote:
>/  On Sun, 2011-02-20 at 09:14 +0100, Koen Kooi wrote:
/>>/  -----BEGIN PGP SIGNED MESSAGE-----
/>>/  Hash: SHA1
/>>/
/>>/  On 19-02-11 20:28, Jonathan Wilson wrote:
/>>>/  Bitbake bombs out with:-
/>>>/
/>>>/  ERROR: Build
/>>>/  of 
/home/wilsonjonathan/oebeagle/angstrom-setup-scripts/sources/openembedded/recipes/gnome/pyorbit_2.24.0.bb
 do_configure failed
/>>>/  ERROR: Task 8977
/>>>/  
(/home/wilsonjonathan/oebeagle/angstrom-setup-scripts/sources/openembedded/recipes/gnome/pyorbit_2.24.0.bb,
 do_configure) failed with exit code 1
/>>>/
/>>>/  Changes manually made to files before compilation.
/>>>/
/>>>/  local.conf
/>>>/          BB_NUMBER_THREADS = "2"
/>>>/
/>>>/          DISTRO   = "angstrom-2010.x"
/>>>/          MACHINE ?= "beagleboard"
/>>>/
/>>>/          # Set TMPDIR instead of defaulting it to /tmp
/>>>/          TMPDIR =
/>>>/          
"/home/wilsonjonathan/oebeagle/angstrom-setup-scripts/build/tmp-angstrom_2010.x"
/>>>/
/>>>/  tune-cortexa8.inc
/>>>/          ARM_FP_MODE ?= "hardfp"
/>>/
/>>/  Why are you changing that there? You are supposed to set that in 
local.conf
/>/
/>/  Total lack of understanding of the language used in .bb files. Re: "?="
/>/  which I'm guessing does mean if variable is not set then set it.
/>/
/>/  I'm not a pc programmer, AS/400's application programmer by trade, but
/>/  rather a hobbyist playing around with arm linux since getting some
/>/  rather cool NAT's to store my photo library.
/>/
/>>/
/>>>/  To produce hard float, -funsafe... was added due to a note on the TI
/>>>/  website.
/>>/
/>>/  It works well without that flag, which website told you to add it?
/>/
/>/          As per the gcc website :
/>/          http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
/>/
/>/          If the selected floating-point hardware includes the NEON
/>/          extension (e.g. -mfpu=`neon'), note that floating-point
/>/          operations will not be used by GCC's auto-vectorization pass
/>/          unless -funsafe-math-optimizations is also specified. This is
/>/          because NEON hardware does not fully implement the IEEE 754
/>/          standard for floating-point arithmetic (in particular denormal
/>/          values are treated as zero), so the use of NEON instructions may
/>/          lead to a loss of precision.
/>/
/>/  Which as I read it means that it wont vectorise causing a possible
/>/  performance hit, although its debatable how much of difference in
/>/  performance there would be in practise.
/
The vectorizer in gcc sucks, so in the rare cases when it vectorizes, it
generally is a lot slower than plain old vfp. The default sets in
angstrom are basically as fast as you can safely get :)

regards,

Koen
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFNYUCJMkyGM64RGpERAkqXAJ4x5a0zkiiesfXMAYalM5uXeTX8RwCeNVJS
BIwEqDc0njaSITdlI/9IhXk=
=jvOi
-----END PGP SIGNATURE-----


_______________________________________________
Angstrom-distro-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel

Reply via email to