[LLVMdev] vmlx forwarding an cortex A9 question

Zhao, Weiming weimingz at quicinc.com
Wed Dec 26 15:50:30 PST 2012


I tried llc fun2.ll -march=arm -mcpu=cortex-a9 -mattr=+neon -float-abi=soft -o fun2.s and I see vmla is generated:
  vmla.f32        q13, q13, q13

Besides, I don't think HasVMLxForwarding() is being used now. 

Thanks,
Weiming


-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Sebastien DELDON-GNB
Sent: Thursday, December 20, 2012 2:26 AM
To: LLVMdev at cs.uiuc.edu
Subject: [LLVMdev] vmlx forwarding an cortex A9 question

Hi all,

On following code when I use llc targeting ARM Cortex-A9 as follows, if vmlx-forwarding is turned off then 'vmla' instructions are generated. It seems that -mcpu=cortex-a9 enables it by default and thus less 'vmla' instructions are generated. On this specific example it doesn't make any difference in term of performance, but on a more complex example disabling vmlx-forwarding leads to significant win in performance wise (10% speed-up). Does anyone can explain me what is the exact purpose of vmlx-forwarding option, and why it is enabled by default on cortex-A9.

On attached file:
llc fun2.ll -march=arm -mcpu=cortex-a9 -mattr=+neon -float-abi=soft -o fun2.s => vmla instruction not generated On attached file:
llc fun2.ll -march=arm -mcpu=cortex-a9 -mattr=+neon,-vmlx-forwarding -float-abi=soft -o fun2.s => vmla instruction generated

Thanks for your answers.
Best Regards
Seb





More information about the llvm-dev mailing list