mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-26 07:29:55 +00:00
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader. Sink some other stuff out of DAGISelHeader into SDISel. Eliminate the various 'Indent' stuff from various targets, which dates to when isel was recursive. 17 files changed, 114 insertions(+), 430 deletions(-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97555 91177308-0d34-0410-b5e6-96231b3b80d8
64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
//===-- PIC16ISelDAGToDAG.cpp - A dag to dag inst selector for PIC16 ------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines an instruction selector for the PIC16 target.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#define DEBUG_TYPE "pic16-isel"
|
|
|
|
#include "PIC16.h"
|
|
#include "PIC16ISelLowering.h"
|
|
#include "PIC16RegisterInfo.h"
|
|
#include "PIC16TargetMachine.h"
|
|
#include "llvm/CodeGen/SelectionDAGISel.h"
|
|
#include "llvm/Support/Compiler.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
#include "llvm/Support/Debug.h"
|
|
#include "llvm/Intrinsics.h"
|
|
using namespace llvm;
|
|
|
|
namespace {
|
|
|
|
class VISIBILITY_HIDDEN PIC16DAGToDAGISel : public SelectionDAGISel {
|
|
|
|
/// TM - Keep a reference to PIC16TargetMachine.
|
|
PIC16TargetMachine &TM;
|
|
|
|
/// PIC16Lowering - This object fully describes how to lower LLVM code to an
|
|
/// PIC16-specific SelectionDAG.
|
|
PIC16TargetLowering &PIC16Lowering;
|
|
|
|
public:
|
|
explicit PIC16DAGToDAGISel(PIC16TargetMachine &tm) :
|
|
SelectionDAGISel(tm),
|
|
TM(tm), PIC16Lowering(*TM.getTargetLowering()) {
|
|
// Keep PIC16 specific DAGISel to use during the lowering
|
|
PIC16Lowering.ISel = this;
|
|
}
|
|
|
|
// Pass Name
|
|
virtual const char *getPassName() const {
|
|
return "PIC16 DAG->DAG Pattern Instruction Selection";
|
|
}
|
|
|
|
private:
|
|
// Include the pieces autogenerated from the target description.
|
|
#include "PIC16GenDAGISel.inc"
|
|
|
|
SDNode *Select(SDNode *N);
|
|
|
|
// Match direct address complex pattern.
|
|
bool SelectDirectAddr(SDNode *Op, SDValue N, SDValue &Address);
|
|
|
|
};
|
|
|
|
}
|
|
|