se.trace_enter() -- -- cpu = arm function se_get_params_se_lib_public_cpu(premake_opts) local dict = se_empty_build_dict() -- 2015-04-29 ryu -- beagle platforms no longer in use -- using jetson board now for ARM builds (Cortex A15) -- see thirdparty/pffft/Makefile.test.arm.jetson for compiler options which seem to produce a working -- executable for pffft -- -- 2012-02-13 ryu -- I'm still seeing non-deterministic results from pffft, even after upgrading to latest code release (2013-01-12). -- -- see http://processors.wiki.ti.com/index.php/Cortex-A8 -- "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -ffast-math -mfloat-abi=softfp" -- -- the pffft README uses these compilation options: -- -march=armv7-a -mtune=cortex-a9 -mfloat-abi=softfp -mfpu=neon -ffast-math -- -- so combining these options, we get -- -cpu=cortex-a8 -march=armv7-a -mtune=cortex-a8 -mfloat-abi=softfp -ffast-math -ftree-vectorize -mfpu=neon -- -- -- 2012-11-13 ryu -- seeing lots of problems with the release-mode unit tests on the beagle (arm) platform, -- where the optimizer pulps the code to the point that tests no longer pass. -- the beagle is currently using gcc 4.5.2 (do: gcc -v) -- -- don't use -funsafe-math-optimizations, it really messes up the unit tests -- and does not substantially improve performance -- -- -fno-strict-aliasing: circumvent C99 strict-aliasing requirements, inclusion doesn't seem to hurt anything -- -- -- from gcc docs: -- Specifying -march=cpu-type implies -mtune=cpu-type -- so you only need to specify -march -- -- gcc docs on ARM: -- -mtune http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html -- -- need to specify -march=armv7-a in order to compile the hand-optimized vector routines in cpu_arm/ -- specifying -march=armv7 doesnt cut it -- -- from http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0002a/ch01s01s01.html -- for automatic vectorization, specify -mfpu=neon and -ftree-vectorize -- -- from 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 are not generated 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. -- -- include dirs dict.include_dirs = {mmfx_root .. "/se_lib_public/cpu_arm"} return dict end se.trace_exit()