Date: Sun, 12 Jun 2011 23:45:47 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r223027 - in projects/llvm-ia64: contrib/llvm/lib/Target/IA64 lib/clang/libllvmia64codegen Message-ID: <201106122345.p5CNjl8C046341@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Sun Jun 12 23:45:46 2011 New Revision: 223027 URL: http://svn.freebsd.org/changeset/base/223027 Log: Add the dag->dag instruction selector class, needed to lower LLVM instruction to IA64 instructions. Added: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64DAGToDAGISel.cpp Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h Sun Jun 12 23:33:08 2011 (r223026) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h Sun Jun 12 23:45:46 2011 (r223027) @@ -8,8 +8,8 @@ namespace llvm { class FunctionPass; class IA64TargetMachine; - FunctionPass *createIA64ISelDag(IA64TargetMachine &TM, - CodeGenOpt::Level OptLevel); + FunctionPass *createIA64ISelPass(IA64TargetMachine &TM, + CodeGenOpt::Level OptLevel); FunctionPass *createIA64BundleSelectionPass(); Added: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64DAGToDAGISel.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64DAGToDAGISel.cpp Sun Jun 12 23:45:46 2011 (r223027) @@ -0,0 +1,75 @@ +#include "IA64.h" +#include "IA64TargetMachine.h" + +#include "llvm/DerivedTypes.h" +#include "llvm/Function.h" +#include "llvm/Intrinsics.h" +#include "llvm/CallingConv.h" +#include "llvm/Constants.h" +#include "llvm/CodeGen/MachineFrameInfo.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineInstrBuilder.h" +#include "llvm/CodeGen/MachineRegisterInfo.h" +#include "llvm/CodeGen/SelectionDAG.h" +#include "llvm/CodeGen/SelectionDAGISel.h" +#include "llvm/Target/TargetLowering.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/raw_ostream.h" + +using namespace llvm; + +namespace { + + class IA64DAGToDAGISel : public SelectionDAGISel { + const IA64TargetLowering &Lowering; + const IA64Subtarget &Subtarget; + + public: + IA64DAGToDAGISel(IA64TargetMachine &TM, CodeGenOpt::Level OptLevel) : + SelectionDAGISel(TM, OptLevel), + Lowering(*TM.getTargetLowering()), + Subtarget(*TM.getSubtargetImpl()) { } + + virtual const char *getPassName() const { + return "IA64 DAG->DAG Instruction Selection"; + } + +// Include the pieces autogenerated from the target description. +#include "IA64GenDAGISel.inc" + + private: + SDNode *Select(SDNode *N); + }; + +} + +FunctionPass * +llvm::createIA64ISelPass(IA64TargetMachine &TM, CodeGenOpt::Level OptLevel) +{ + return new IA64DAGToDAGISel(TM, OptLevel); +} + + +SDNode * +IA64DAGToDAGISel::Select(SDNode *Node) +{ + DebugLoc dl = Node->getDebugLoc(); + + // Dump information about the Node being selected + errs() << "Selecting: "; + Node->dump(CurDAG); + errs() << "\n"; + + SDNode *ResNode = SelectCode(Node); + + errs() << "=> "; + if (ResNode == NULL || ResNode == Node) + Node->dump(CurDAG); + else + ResNode->dump(CurDAG); + errs() << "\n"; + + return ResNode; +} Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp ============================================================================== --- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp Sun Jun 12 23:33:08 2011 (r223026) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp Sun Jun 12 23:45:46 2011 (r223027) @@ -32,7 +32,7 @@ bool IA64TargetMachine::addInstSelector(PassManagerBase &PM, CodeGenOpt::Level OptLevel) { - // PM.add(createIA64ISelDag(*this, OptLevel)); + PM.add(createIA64ISelPass(*this, OptLevel)); return false; } Modified: projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile ============================================================================== --- projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile Sun Jun 12 23:33:08 2011 (r223026) +++ projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile Sun Jun 12 23:45:46 2011 (r223027) @@ -5,6 +5,7 @@ LIB= llvmia64codegen SRCDIR= lib/Target/IA64 SRCS= \ IA64AsmPrinter.cpp \ + IA64DAGToDAGISel.cpp \ IA64FrameLowering.cpp \ IA64InstrInfo.cpp \ IA64TargetLowering.cpp \ @@ -17,6 +18,7 @@ SRCS= \ TGHDRS= \ Intrinsics \ + IA64GenDAGISel \ IA64GenInstrInfo \ IA64GenInstrNames \ IA64GenRegisterInfo \
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201106122345.p5CNjl8C046341>