diff options
author | Brian Gaeke <gaeke@uiuc.edu> | 2004-02-02 19:06:12 +0000 |
---|---|---|
committer | Brian Gaeke <gaeke@uiuc.edu> | 2004-02-02 19:06:12 +0000 |
commit | 2217bdbf688d9982842b756babed608e1f3bbe1f (patch) | |
tree | 459a7cf6fd7eed3be3887f6eb4e005e09ebfeb11 /tools/llc | |
parent | 7ca255b76c39ca2dbe619b48b3b88f67db11e683 (diff) | |
download | llvm-2217bdbf688d9982842b756babed608e1f3bbe1f.tar.gz llvm-2217bdbf688d9982842b756babed608e1f3bbe1f.tar.bz2 llvm-2217bdbf688d9982842b756babed608e1f3bbe1f.tar.xz |
Add a -march=powerpc option. Automatically select it if this looks like a
big-endian, 32-bit module, or if __ppc__, __POWERPC__, or __APPLE__ are
defined.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11075 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llc')
-rw-r--r-- | tools/llc/llc.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index eae891bf1f..2ce1e54276 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -37,12 +37,13 @@ OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename")); static cl::opt<bool> Force("f", cl::desc("Overwrite output files")); -enum ArchName { noarch, x86, Sparc }; +enum ArchName { noarch, x86, Sparc, PowerPC }; static cl::opt<ArchName> Arch("march", cl::desc("Architecture to generate assembly for:"), cl::Prefix, cl::values(clEnumVal(x86, " IA-32 (Pentium and above)"), clEnumValN(Sparc, "sparc", " SPARC V9"), + clEnumValN(PowerPC, "powerpc", " PowerPC"), 0), cl::init(noarch)); @@ -87,6 +88,9 @@ int main(int argc, char **argv) { case Sparc: TargetMachineAllocator = allocateSparcTargetMachine; break; + case PowerPC: + TargetMachineAllocator = allocatePowerPCTargetMachine; + break; default: // Decide what the default target machine should be, by looking at // the module. This heuristic (ILP32, LE -> IA32; LP64, BE -> @@ -95,6 +99,9 @@ int main(int argc, char **argv) { if (mod.getEndianness() == Module::LittleEndian && mod.getPointerSize() == Module::Pointer32) { TargetMachineAllocator = allocateX86TargetMachine; + } else if (mod.getEndianness() == Module::BigEndian && + mod.getPointerSize() == Module::Pointer32) { + TargetMachineAllocator = allocatePowerPCTargetMachine; } else if (mod.getEndianness() == Module::BigEndian && mod.getPointerSize() == Module::Pointer64) { TargetMachineAllocator = allocateSparcTargetMachine; @@ -105,6 +112,8 @@ int main(int argc, char **argv) { TargetMachineAllocator = allocateX86TargetMachine; #elif defined(sparc) || defined(__sparc__) || defined(__sparcv9) TargetMachineAllocator = allocateSparcTargetMachine; +#elif defined(__POWERPC__) || defined(__ppc__) || defined(__APPLE__) + TargetMachineAllocator = allocatePowerPCTargetMachine; #else std::cerr << argv[0] << ": module does not specify a target to use. " << "You must use the -march option.\n"; |