Sebastien DELDON-GNB
2012-Dec-20 10:25 UTC
[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 -------------- next part -------------- A non-text attachment was scrubbed... Name: fun2.ll Type: application/octet-stream Size: 2731 bytes Desc: fun2.ll URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121220/ce4615b5/attachment.obj>
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
Reasonably Related Threads
- [LLVMdev] Is there any llvm neon intrinsic that maps to vmla.f32 instruction ?
- [LLVMdev] Is there any llvm neon intrinsic that maps to vmla.f32 instruction ?
- [LLVMdev] RE : Is there any llvm neon intrinsic that maps to vmla.f32 instruction ?
- [LLVMdev] Is there any llvm neon intrinsic that maps to vmla.f32 instruction ?
- [LLVMdev] Is there any llvm neon intrinsic that maps to vmla.f32 instruction ?