[LLVMdev] Performance regression on ARM

Joerg Sonnenberger joerg at britannica.bec.de
Sat Oct 18 16:11:06 PDT 2014

On Fri, Oct 17, 2014 at 06:51:38PM +0400, Anton Korobeynikov wrote:
> > Chandler’s complex arithmetic changes are also in the range: r219557 in clang.  We saw it change the code in mandel-2 significantly.
> mandel-2 is broken on hard FP ABI systems, btw. The reason is simply:
> we're emitting a call to __muldc3 with AAPCS VFP calling convention,
> however, the function expects softfp (AAPCS) calling conv and reads
> garbage from GP registers.

One possible approach is the attached patch. It is not completely
correct as it doesn't handle the possible exceptions for WoA and iOS,
but it might be a starting point. The real question for me is whether
this logic belongs into clang at all. Who can speak up for the Fortran
related behavior of complex arithmetic? If it matters the desired C
rules, especially with regard to real and imaginary numbers, it would
strongly support putting it into IR properly.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: CGExprComplex.cpp.diff
Type: text/x-diff
Size: 968 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141019/9d1ccda4/attachment.diff>

More information about the llvm-dev mailing list