[LLVMdev] Is there any llvm neon intrinsic that maps to vmla.f32 instruction ?

Renato Golin renato.golin at linaro.org
Mon Feb 11 08:12:32 PST 2013


On 11 February 2013 15:51, Sebastien DELDON-GNB <sebastien.deldon at st.com>wrote:

> Indeed problem is with generation of vmla.f64. Affected benchmark is MILC
> from SPEC 2006 suite and disabling vmlx forwarding gives a 10% speed-up on
> complete benchmark execution ! So it is worth a try.
>

Hi Sebastien,

Ineed, worth having a look. Including Bob Wilson (who introduced the code
in the first place, and is a connoisseur of NEON in LLVM) to see if he has
a better idea of the problem.


Now going back to vmla generation through LLMV intrinsic usage. I’ve looked
> at .td file and it seems to me that when there is a “pattern” to generate
> instruction, no intrinsic is defined to generate it, correct ?
>

Correct.


Is it possible for an instruction that is generated through a “pattern” to
> add also an LLVM intrinsic. My goal here is to not rely on LLVM to generate
> VMLA but rather having my front-end to generate call to a VLMA intrinsic I
> would have defined when it thinks it’s appropriate to generate one.
>
No, and I'm not sure we should have one.

I understand why you want one, but that's too much back-end knowledge to a
front-end, and any pass that can transform a pair of VMLAs into an
intrinsic call, can also transform into VMLA+VMUL+VADD. In this case,
disabling the optimization is probably the best course of action.

In your compiler, you may prefer to leave it always disabled, then you
should set it when creating the Target.

If we find that this optimization produces worse code in more cases than
not, than we should leave it disable by default and let the user enable
when necessary. I'll let Bob follow up on that, since I don't know what
benchmarks he used.

cheers,
--renato
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130211/c1371c14/attachment.html>


More information about the llvm-dev mailing list