mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-05 12:31:33 +00:00
b8cab9227a
instead of requiring all "short description" strings to begin with two spaces. This makes these strings less mysterious, and it fixes some cases where short description strings mistakenly did not begin with two spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57521 91177308-0d34-0410-b5e6-96231b3b80d8
71 lines
1.9 KiB
C++
71 lines
1.9 KiB
C++
//===-- PIC16TargetMachine.cpp - Define TargetMachine for PIC16 -----------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Top-level implementation for the PIC16 target.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "PIC16.h"
|
|
#include "PIC16TargetAsmInfo.h"
|
|
#include "PIC16TargetMachine.h"
|
|
#include "llvm/Module.h"
|
|
#include "llvm/PassManager.h"
|
|
#include "llvm/Target/TargetAsmInfo.h"
|
|
#include "llvm/Target/TargetMachineRegistry.h"
|
|
|
|
using namespace llvm;
|
|
|
|
namespace {
|
|
// Register the targets
|
|
RegisterTarget<PIC16TargetMachine> X("pic16", "PIC16 14-bit");
|
|
}
|
|
|
|
PIC16TargetMachine::
|
|
PIC16TargetMachine(const Module &M, const std::string &FS) :
|
|
Subtarget(*this, M, FS), DataLayout("e-p:16:8:8-i8:8:8-i16:8:8-i32:8:8"),
|
|
InstrInfo(*this), TLInfo(*this),
|
|
FrameInfo(TargetFrameInfo::StackGrowsUp, 8, 0) { }
|
|
|
|
|
|
const TargetAsmInfo *PIC16TargetMachine::createTargetAsmInfo() const
|
|
{
|
|
return new PIC16TargetAsmInfo(*this);
|
|
}
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Pass Pipeline Configuration
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
bool PIC16TargetMachine::addInstSelector(PassManagerBase &PM, bool Fast)
|
|
{
|
|
// Install an instruction selector.
|
|
PM.add(createPIC16ISelDag(*this));
|
|
return false;
|
|
}
|
|
|
|
bool PIC16TargetMachine::
|
|
addPrologEpilogInserter(PassManagerBase &PM, bool Fast)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool PIC16TargetMachine::addPreEmitPass(PassManagerBase &PM, bool Fast)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool PIC16TargetMachine::
|
|
addAssemblyEmitter(PassManagerBase &PM, bool Fast, raw_ostream &Out)
|
|
{
|
|
// Output assembly language.
|
|
PM.add(createPIC16CodePrinterPass(Out, *this));
|
|
return false;
|
|
}
|
|
|