[LLVMdev] Request for Help: Teach ARM target to auto-detect cpu / subtarget features

Evan Cheng evan.cheng at apple.com
Fri May 11 11:39:28 PDT 2012


On May 11, 2012, at 9:25 AM, Chris Lattner wrote:

> 
> On May 11, 2012, at 12:25 AM, James Molloy wrote:
> 
>> On 11/05/12 04:56, 陳韋任 wrote:
>>>> I've just filed PR12794: Add ARM cpu / subtarget features auto-detection. And I would very much appreciate the community's help to implement this.
>>>> 
>>>> What motivated this? Well this:
>>>> http://www.phoronix.com/scan.php?page=news_item&px=MTA5OTM
>>>> 
>>>> I believe one of the reason the benchmark numbers are totally bogus is that the compilation are done on ARM hosts. Given the benchmarks are apparently compiled without -mcpu=cortex-a9, I suspect LLVM ended up generating code for "generic" ARMv4 cpu. This article makes me sick in my stomach.
>>>  I skip through MCTargetDesc/ARMAsmBackend.cpp, it seems llvm::createARMAsmBackend
>>> only pickup different ARM ISA for Darwin. As for Linux, I guess we need to tweak
>>> ELFARMAsmBackend? Do we need to modify Clang as well?
>>> 
>>> Regards,
>>> chenwj
>>> 
>> The backend sounds like the wrong place to implement this feature.
>> 
>> I'd have thought the Clang driver would be the ideal place?
> 
> The right place to implement this is in lib/Support/Host.cpp.  X86 has an implementation of sys::getHostCPUName(), but everything else just uses the:
> 
> std::string sys::getHostCPUName() {
>  return "generic";
> }
> 
> implementation.

Right. There are many advantages to doing this in the backend. It would work for everything, such as llc or arbitrary clients of ARM backend. Also the support library is being used by Clang frontend to handle -march=native.

Evan

> 
> -Chris
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list