diff options
author | Sumanth Gundapaneni <sgundapa@codeaurora.org> | 2015-02-26 18:08:41 +0000 |
---|---|---|
committer | Sumanth Gundapaneni <sgundapa@codeaurora.org> | 2015-02-26 18:08:41 +0000 |
commit | 28a3b86b069c05418234bd16890843ca400b8639 (patch) | |
tree | 718794189966c82ce4ea2a45e34788714b944820 /llvm/lib/Target/ARM/ARMAsmPrinter.cpp | |
parent | a9049ea36848df64e26d3c11a11dd393fb469e79 (diff) | |
download | bcm5719-llvm-28a3b86b069c05418234bd16890843ca400b8639.tar.gz bcm5719-llvm-28a3b86b069c05418234bd16890843ca400b8639.zip |
Use ".arch_extension" ARM directive to support hwdiv on krait
In case of "krait" CPU, asm printer doesn't emit any ".cpu" so the
features bits are not computed. This patch lets the asm printer
emit ".cpu cortex-a9" directive for krait and the hwdiv feature is
enabled through ".arch_extension". In short, krait is treated
as "cortex-a9" with hwdiv. We can not emit ".krait" as CPU since
it is not supported bu GNU GAS yet
llvm-svn: 230651
Diffstat (limited to 'llvm/lib/Target/ARM/ARMAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 19c39f4e745..2544a01fa7f 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -16,6 +16,7 @@ #include "ARM.h" #include "ARMConstantPoolValue.h" #include "ARMFPUName.h" +#include "ARMArchExtName.h" #include "ARMMachineFunctionInfo.h" #include "ARMTargetMachine.h" #include "ARMTargetObjectFile.h" @@ -668,9 +669,17 @@ void ARMAsmPrinter::emitAttributes() { std::string CPUString = STI.getCPUString(); - // FIXME: remove krait check when GNU tools support krait cpu - if (CPUString != "generic" && CPUString != "krait") - ATS.emitTextAttribute(ARMBuildAttrs::CPU_name, CPUString); + if (CPUString != "generic") { + // FIXME: remove krait check when GNU tools support krait cpu + if (STI.isKrait()) { + ATS.emitTextAttribute(ARMBuildAttrs::CPU_name, "cortex-a9"); + // We consider krait as a "cortex-a9" + hwdiv CPU + // Enable hwdiv through ".arch_extension idiv" + if (STI.hasDivide() || STI.hasDivideInARMMode()) + ATS.emitArchExtension(ARM::HWDIV); + } else + ATS.emitTextAttribute(ARMBuildAttrs::CPU_name, CPUString); + } ATS.emitAttribute(ARMBuildAttrs::CPU_arch, getArchForCPU(CPUString, &STI)); |