Bugzilla – Bug 1191
Clang/ARM transforms VMLA into VMUL+VADD under our feet!
Last modified: 2016-04-04 20:47:17 UTC
See e.g. http://lists.llvm.org/pipermail/llvm-dev/2013-December/068806.html
For us this is a disaster, since this means that we can't trust EIGEN_HAS_SINGLE_INSTRUCTION_MADD. So we end up mis-shooting the number of registers, and spilling!
The work-around for this is going to be to reimplement the pmadd in inline assembly.
* this affects all known versions of Clang/ARM, but not Aarch64.
* this depends on -mcpu= settings. Affected settings include -mcpu=cortex-a8 and -mcpu=cortex-a7. Since the former is the default on -march=armv7-a, that is a very common case.