[LLVMdev] vmlx forwarding an cortex A9 question
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.
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
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.
More information about the llvm-dev