mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 08:17:40 +00:00
PTX: Add intrinsics to list of built-in intrinsics, which allows them to be
used by Clang. To help Clang integration, the PTX target has been split
into two targets: ptx32 and ptx64, depending on the desired pointer size.
- Add GCCBuiltin class to all intrinsics
- Split PTX target into ptx32 and ptx64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129851 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -30,9 +30,15 @@ namespace llvm {
|
||||
}
|
||||
|
||||
extern "C" void LLVMInitializePTXTarget() {
|
||||
RegisterTargetMachine<PTXTargetMachine> X(ThePTXTarget);
|
||||
RegisterAsmInfo<PTXMCAsmInfo> Y(ThePTXTarget);
|
||||
TargetRegistry::RegisterAsmStreamer(ThePTXTarget, createPTXAsmStreamer);
|
||||
|
||||
RegisterTargetMachine<PTX32TargetMachine> X(ThePTX32Target);
|
||||
RegisterTargetMachine<PTX64TargetMachine> Y(ThePTX64Target);
|
||||
|
||||
RegisterAsmInfo<PTXMCAsmInfo> Z(ThePTX32Target);
|
||||
RegisterAsmInfo<PTXMCAsmInfo> W(ThePTX64Target);
|
||||
|
||||
TargetRegistry::RegisterAsmStreamer(ThePTX32Target, createPTXAsmStreamer);
|
||||
TargetRegistry::RegisterAsmStreamer(ThePTX64Target, createPTXAsmStreamer);
|
||||
}
|
||||
|
||||
namespace {
|
||||
@@ -45,18 +51,28 @@ namespace {
|
||||
// DataLayout and FrameLowering are filled with dummy data
|
||||
PTXTargetMachine::PTXTargetMachine(const Target &T,
|
||||
const std::string &TT,
|
||||
const std::string &FS)
|
||||
const std::string &FS,
|
||||
bool is64Bit)
|
||||
: LLVMTargetMachine(T, TT),
|
||||
// FIXME: This feels like a dirty hack, but Subtarget does not appear to be
|
||||
// initialized at this point, and we need to finish initialization of
|
||||
// DataLayout.
|
||||
DataLayout((FS.find("64bit") != FS.npos) ? DataLayout64 : DataLayout32),
|
||||
Subtarget(TT, FS),
|
||||
DataLayout(is64Bit ? DataLayout64 : DataLayout32),
|
||||
Subtarget(TT, FS, is64Bit),
|
||||
FrameLowering(Subtarget),
|
||||
InstrInfo(*this),
|
||||
TLInfo(*this) {
|
||||
}
|
||||
|
||||
PTX32TargetMachine::PTX32TargetMachine(const Target &T,
|
||||
const std::string& TT,
|
||||
const std::string& FS)
|
||||
: PTXTargetMachine(T, TT, FS, false) {
|
||||
}
|
||||
|
||||
PTX64TargetMachine::PTX64TargetMachine(const Target &T,
|
||||
const std::string& TT,
|
||||
const std::string& FS)
|
||||
: PTXTargetMachine(T, TT, FS, true) {
|
||||
}
|
||||
|
||||
bool PTXTargetMachine::addInstSelector(PassManagerBase &PM,
|
||||
CodeGenOpt::Level OptLevel) {
|
||||
PM.add(createPTXISelDag(*this, OptLevel));
|
||||
|
||||
Reference in New Issue
Block a user