mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-02 22:32:08 +00:00
* Move AIX into the llvm namespace to be accessed from RegisterInfo
* Mark InstrInfo with 32 vs. 64 bit flag * Enable the 64-bit isel and asm printer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15672 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a6ecd9ee47
commit
1d3527edbf
@ -28,11 +28,13 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
namespace {
|
namespace llvm {
|
||||||
cl::opt<bool>
|
cl::opt<bool> AIX("aix",
|
||||||
AIX("aix",
|
cl::desc("Generate AIX/xcoff instead of Darwin/MachO"),
|
||||||
cl::desc("Generate AIX/xcoff rather than Darwin/macho"),
|
|
||||||
cl::Hidden);
|
cl::Hidden);
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
const std::string PPC32 = "PowerPC/32bit";
|
const std::string PPC32 = "PowerPC/32bit";
|
||||||
const std::string PPC64 = "PowerPC/64bit";
|
const std::string PPC64 = "PowerPC/64bit";
|
||||||
|
|
||||||
@ -47,8 +49,10 @@ PowerPCTargetMachine::PowerPCTargetMachine(const std::string &name,
|
|||||||
IntrinsicLowering *IL,
|
IntrinsicLowering *IL,
|
||||||
const TargetData &TD,
|
const TargetData &TD,
|
||||||
const TargetFrameInfo &TFI,
|
const TargetFrameInfo &TFI,
|
||||||
const PowerPCJITInfo &TJI)
|
const PowerPCJITInfo &TJI,
|
||||||
: TargetMachine(name, IL, TD), FrameInfo(TFI), JITInfo(TJI) {}
|
bool is64b)
|
||||||
|
: TargetMachine(name, IL, TD), InstrInfo(is64b), FrameInfo(TFI), JITInfo(TJI)
|
||||||
|
{}
|
||||||
|
|
||||||
unsigned PowerPCTargetMachine::getJITMatchQuality() {
|
unsigned PowerPCTargetMachine::getJITMatchQuality() {
|
||||||
#if defined(__POWERPC__) || defined (__ppc__) || defined(_POWER)
|
#if defined(__POWERPC__) || defined (__ppc__) || defined(_POWER)
|
||||||
@ -80,7 +84,7 @@ bool PowerPCTargetMachine::addPassesToEmitAssembly(PassManager &PM,
|
|||||||
PM.add(createUnreachableBlockEliminationPass());
|
PM.add(createUnreachableBlockEliminationPass());
|
||||||
|
|
||||||
if (LP64)
|
if (LP64)
|
||||||
PM.add(createPPC32ISelSimple(*this));
|
PM.add(createPPC64ISelSimple(*this));
|
||||||
else
|
else
|
||||||
PM.add(createPPC32ISelSimple(*this));
|
PM.add(createPPC32ISelSimple(*this));
|
||||||
|
|
||||||
@ -100,7 +104,7 @@ bool PowerPCTargetMachine::addPassesToEmitAssembly(PassManager &PM,
|
|||||||
PM.add(createPPCBranchSelectionPass());
|
PM.add(createPPCBranchSelectionPass());
|
||||||
|
|
||||||
if (AIX)
|
if (AIX)
|
||||||
PM.add(createPPC32AsmPrinter(Out, *this));
|
PM.add(createPPC64AsmPrinter(Out, *this));
|
||||||
else
|
else
|
||||||
PM.add(createPPC32AsmPrinter(Out, *this));
|
PM.add(createPPC32AsmPrinter(Out, *this));
|
||||||
|
|
||||||
@ -145,7 +149,7 @@ PPC32TargetMachine::PPC32TargetMachine(const Module &M,
|
|||||||
: PowerPCTargetMachine(PPC32, IL,
|
: PowerPCTargetMachine(PPC32, IL,
|
||||||
TargetData(PPC32,false,4,4,4,4,4,4,2,1,4),
|
TargetData(PPC32,false,4,4,4,4,4,4,2,1,4),
|
||||||
TargetFrameInfo(TargetFrameInfo::StackGrowsDown,16,0),
|
TargetFrameInfo(TargetFrameInfo::StackGrowsDown,16,0),
|
||||||
PPC32JITInfo(*this)) {}
|
PPC32JITInfo(*this), false) {}
|
||||||
|
|
||||||
/// PPC64TargetMachine ctor - Create a LP64 architecture model
|
/// PPC64TargetMachine ctor - Create a LP64 architecture model
|
||||||
///
|
///
|
||||||
@ -153,7 +157,7 @@ PPC64TargetMachine::PPC64TargetMachine(const Module &M, IntrinsicLowering *IL)
|
|||||||
: PowerPCTargetMachine(PPC64, IL,
|
: PowerPCTargetMachine(PPC64, IL,
|
||||||
TargetData(PPC64,false,8,4,4,4,4,4,2,1,4),
|
TargetData(PPC64,false,8,4,4,4,4,4,2,1,4),
|
||||||
TargetFrameInfo(TargetFrameInfo::StackGrowsDown,16,0),
|
TargetFrameInfo(TargetFrameInfo::StackGrowsDown,16,0),
|
||||||
PPC64JITInfo(*this)) {}
|
PPC64JITInfo(*this), true) {}
|
||||||
|
|
||||||
unsigned PPC32TargetMachine::getModuleMatchQuality(const Module &M) {
|
unsigned PPC32TargetMachine::getModuleMatchQuality(const Module &M) {
|
||||||
if (M.getEndianness() == Module::BigEndian &&
|
if (M.getEndianness() == Module::BigEndian &&
|
||||||
|
@ -34,7 +34,7 @@ class PowerPCTargetMachine : public TargetMachine {
|
|||||||
protected:
|
protected:
|
||||||
PowerPCTargetMachine(const std::string &name, IntrinsicLowering *IL,
|
PowerPCTargetMachine(const std::string &name, IntrinsicLowering *IL,
|
||||||
const TargetData &TD, const TargetFrameInfo &TFI,
|
const TargetData &TD, const TargetFrameInfo &TFI,
|
||||||
const PowerPCJITInfo &TJI);
|
const PowerPCJITInfo &TJI, bool is64b);
|
||||||
public:
|
public:
|
||||||
virtual const PowerPCInstrInfo *getInstrInfo() const { return &InstrInfo; }
|
virtual const PowerPCInstrInfo *getInstrInfo() const { return &InstrInfo; }
|
||||||
virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; }
|
virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user