diff options
author | Jim Laskey <jlaskey@mac.com> | 2006-12-12 20:57:08 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2006-12-12 20:57:08 +0000 |
commit | c35010d3a44397dd04ed3bff5287f9c718dacd4a (patch) | |
tree | c93ba8d6f9a3d4fd23e58efcd68e16f6c22dd6e7 /lib/Target/PowerPC/PPCAsmPrinter.cpp | |
parent | dbe4006cf3cf0802dc318a5f2070c04c326e170b (diff) | |
download | external_llvm-c35010d3a44397dd04ed3bff5287f9c718dacd4a.zip external_llvm-c35010d3a44397dd04ed3bff5287f9c718dacd4a.tar.gz external_llvm-c35010d3a44397dd04ed3bff5287f9c718dacd4a.tar.bz2 |
Honor cpu directive, take two.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32492 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/PPCAsmPrinter.cpp')
-rw-r--r-- | lib/Target/PowerPC/PPCAsmPrinter.cpp | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index bcdd61d..0659f03 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -542,23 +542,26 @@ bool DarwinAsmPrinter::runOnMachineFunction(MachineFunction &MF) { bool DarwinAsmPrinter::doInitialization(Module &M) { -#if 1 - if (Subtarget.isGigaProcessor()) - O << "\t.machine ppc970\n"; -#else - const std::string &CPU = Subtarget.getCPU(); - - if (CPU != "generic") - O << "\t.machine ppc" << CPU << "\n"; - else if (Subtarget.isGigaProcessor()) - O << "\t.machine ppc970\n"; - else if (Subtarget.isPPC64()) - O << "\t.machine ppc64\n"; - else if (Subtarget.hasAltivec()) - O << "\t.machine ppc7400\n"; - else - O << "\t.machine ppc\n"; -#endif + static const char *CPUDirectives[] = { + "ppc", + "ppc601", + "ppc602", + "ppc603", + "ppc7400", + "ppc750", + "ppc970", + "ppc64" + }; + + unsigned Directive = Subtarget.getDarwinDirective(); + if (Subtarget.isGigaProcessor() && Directive < PPC::DIR_970) + Directive = PPC::DIR_970; + if (Subtarget.hasAltivec() && Directive < PPC::DIR_7400) + Directive = PPC::DIR_7400; + if (Subtarget.isPPC64() && Directive < PPC::DIR_970) + Directive = PPC::DIR_64; + assert(Directive <= PPC::DIR_64 && "Directive out of range."); + O << "\t.machine " << CPUDirectives[Directive] << "\n"; AsmPrinter::doInitialization(M); |