Changes in directory llvm/lib/Target/X86:
X86.h updated: 1.44 -> 1.45 X86ATTAsmPrinter.cpp updated: 1.30 -> 1.31 X86ATTAsmPrinter.h updated: 1.9 -> 1.10 X86AsmPrinter.cpp updated: 1.170 -> 1.171 X86AsmPrinter.h updated: 1.13 -> 1.14 X86ELFWriter.cpp updated: 1.2 -> 1.3 X86ISelDAGToDAG.cpp updated: 1.55 -> 1.56 X86ISelLowering.h updated: 1.32 -> 1.33 X86IntelAsmPrinter.cpp updated: 1.23 -> 1.24 X86IntelAsmPrinter.h updated: 1.10 -> 1.11 X86JITInfo.h updated: 1.7 -> 1.8 X86TargetMachine.cpp updated: 1.106 -> 1.107 X86TargetMachine.h updated: 1.31 -> 1.32 --- Log message: Added getTargetLowering() to TargetMachine. Refactored targets to support this. --- Diffs of the changes: (+45 -37) X86.h | 8 ++++---- X86ATTAsmPrinter.cpp | 1 - X86ATTAsmPrinter.h | 4 +--- X86AsmPrinter.cpp | 10 +++++----- X86AsmPrinter.h | 5 ++--- X86ELFWriter.cpp | 6 +++--- X86ISelDAGToDAG.cpp | 10 ++++++---- X86ISelLowering.h | 6 ++++++ X86IntelAsmPrinter.cpp | 1 - X86IntelAsmPrinter.h | 5 +---- X86JITInfo.h | 6 +++--- X86TargetMachine.cpp | 8 ++++++-- X86TargetMachine.h | 12 ++++++++---- 13 files changed, 45 insertions(+), 37 deletions(-) Index: llvm/lib/Target/X86/X86.h diff -u llvm/lib/Target/X86/X86.h:1.44 llvm/lib/Target/X86/X86.h:1.45 --- llvm/lib/Target/X86/X86.h:1.44 Thu Feb 16 18:03:04 2006 +++ llvm/lib/Target/X86/X86.h Mon Mar 13 17:20:37 2006 @@ -19,7 +19,7 @@ namespace llvm { -class TargetMachine; +class X86TargetMachine; class PassManager; class FunctionPass; class IntrinsicLowering; @@ -28,7 +28,7 @@ /// createX86ISelDag - This pass converts a legalized DAG into a /// X86-specific DAG, ready for instruction scheduling. /// -FunctionPass *createX86ISelDag(TargetMachine &TM); +FunctionPass *createX86ISelDag(X86TargetMachine &TM); /// createX86FloatingPointStackifierPass - This function returns a pass which /// converts floating point register references and pseudo instructions into @@ -40,7 +40,7 @@ /// assembly code for a MachineFunction to the given output stream, /// using the given target machine description. /// -FunctionPass *createX86CodePrinterPass(std::ostream &o, TargetMachine &tm); +FunctionPass *createX86CodePrinterPass(std::ostream &o, X86TargetMachine &tm); /// createX86CodeEmitterPass - Return a pass that emits the collected X86 code /// to the specified MCE object. @@ -50,7 +50,7 @@ /// code as an ELF object file. /// void addX86ELFObjectWriterPass(PassManager &FPM, - std::ostream &o, TargetMachine &tm); + std::ostream &o, X86TargetMachine &tm); /// createX86EmitCodeToMemory - Returns a pass that converts a register /// allocated function into raw machine code in a dynamically Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.30 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.31 --- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.30 Mon Mar 6 20:23:26 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp Mon Mar 13 17:20:37 2006 @@ -21,7 +21,6 @@ #include "llvm/Target/TargetOptions.h" #include <iostream> using namespace llvm; -using namespace x86; /// runOnMachineFunction - This uses the printMachineInstruction() /// method to print assembly for each instruction. Index: llvm/lib/Target/X86/X86ATTAsmPrinter.h diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.9 llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.10 --- llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.9 Mon Mar 6 20:02:57 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.h Mon Mar 13 17:20:37 2006 @@ -18,10 +18,9 @@ #include "llvm/CodeGen/ValueTypes.h" namespace llvm { -namespace x86 { struct X86ATTAsmPrinter : public X86SharedAsmPrinter { - X86ATTAsmPrinter(std::ostream &O, TargetMachine &TM) + X86ATTAsmPrinter(std::ostream &O, X86TargetMachine &TM) : X86SharedAsmPrinter(O, TM) { } virtual const char *getPassName() const { @@ -69,7 +68,6 @@ bool runOnMachineFunction(MachineFunction &F); }; -} // end namespace x86 } // end namespace llvm #endif Index: llvm/lib/Target/X86/X86AsmPrinter.cpp diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.170 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.171 --- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.170 Tue Mar 7 16:00:35 2006 +++ llvm/lib/Target/X86/X86AsmPrinter.cpp Mon Mar 13 17:20:37 2006 @@ -14,10 +14,10 @@ // //===----------------------------------------------------------------------===// +#include "X86AsmPrinter.h" #include "X86ATTAsmPrinter.h" #include "X86IntelAsmPrinter.h" #include "X86Subtarget.h" -#include "X86.h" #include "llvm/Constants.h" #include "llvm/Module.h" #include "llvm/Type.h" @@ -25,10 +25,9 @@ #include "llvm/Support/Mangler.h" #include "llvm/Support/CommandLine.h" using namespace llvm; -using namespace x86; -Statistic<> llvm::x86::EmittedInsts("asm-printer", - "Number of machine instrs printed"); +Statistic<> llvm::EmittedInsts("asm-printer", + "Number of machine instrs printed"); enum AsmWriterFlavorTy { att, intel }; cl::opt<AsmWriterFlavorTy> @@ -210,7 +209,8 @@ /// for a MachineFunction to the given output stream, using the given target /// machine description. /// -FunctionPass *llvm::createX86CodePrinterPass(std::ostream &o,TargetMachine &tm){ +FunctionPass *llvm::createX86CodePrinterPass(std::ostream &o, + X86TargetMachine &tm){ switch (AsmWriterFlavor) { default: assert(0 && "Unknown asm flavor!"); Index: llvm/lib/Target/X86/X86AsmPrinter.h diff -u llvm/lib/Target/X86/X86AsmPrinter.h:1.13 llvm/lib/Target/X86/X86AsmPrinter.h:1.14 --- llvm/lib/Target/X86/X86AsmPrinter.h:1.13 Mon Mar 6 20:23:26 2006 +++ llvm/lib/Target/X86/X86AsmPrinter.h Mon Mar 13 17:20:37 2006 @@ -17,6 +17,7 @@ #define X86ASMPRINTER_H #include "X86.h" +#include "X86TargetMachine.h" #include "llvm/CodeGen/AsmPrinter.h" #include "llvm/CodeGen/DwarfWriter.h" #include "llvm/CodeGen/MachineDebugInfo.h" @@ -25,7 +26,6 @@ namespace llvm { -namespace x86 { extern Statistic<> EmittedInsts; @@ -56,7 +56,7 @@ struct X86SharedAsmPrinter : public AsmPrinter { X86DwarfWriter DW; - X86SharedAsmPrinter(std::ostream &O, TargetMachine &TM) + X86SharedAsmPrinter(std::ostream &O, X86TargetMachine &TM) : AsmPrinter(O, TM), DW(O, this), forDarwin(false) { } bool doInitialization(Module &M); @@ -90,7 +90,6 @@ } }; -} // end namespace x86 } // end namespace llvm #endif Index: llvm/lib/Target/X86/X86ELFWriter.cpp diff -u llvm/lib/Target/X86/X86ELFWriter.cpp:1.2 llvm/lib/Target/X86/X86ELFWriter.cpp:1.3 --- llvm/lib/Target/X86/X86ELFWriter.cpp:1.2 Mon Jul 11 00:17:48 2005 +++ llvm/lib/Target/X86/X86ELFWriter.cpp Mon Mar 13 17:20:37 2006 @@ -13,15 +13,15 @@ //===----------------------------------------------------------------------===// #include "X86.h" +#include "X86TargetMachine.h" #include "llvm/PassManager.h" #include "llvm/CodeGen/ELFWriter.h" -#include "llvm/Target/TargetMachine.h" using namespace llvm; namespace { class X86ELFWriter : public ELFWriter { public: - X86ELFWriter(std::ostream &O, TargetMachine &TM) : ELFWriter(O, TM) { + X86ELFWriter(std::ostream &O, X86TargetMachine &TM) : ELFWriter(O, TM) { e_machine = 3; // EM_386 } }; @@ -31,7 +31,7 @@ /// as an ELF object file. /// void llvm::addX86ELFObjectWriterPass(PassManager &FPM, - std::ostream &O, TargetMachine &TM) { + std::ostream &O, X86TargetMachine &TM) { X86ELFWriter *EW = new X86ELFWriter(O, TM); FPM.add(EW); FPM.add(createX86CodeEmitterPass(EW->getMachineCodeEmitter())); Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.55 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.56 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.55 Tue Feb 28 15:13:57 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Mon Mar 13 17:20:37 2006 @@ -15,9 +15,10 @@ #define DEBUG_TYPE "isel" #include "X86.h" #include "X86InstrBuilder.h" +#include "X86ISelLowering.h" #include "X86RegisterInfo.h" #include "X86Subtarget.h" -#include "X86ISelLowering.h" +#include "X86TargetMachine.h" #include "llvm/GlobalValue.h" #include "llvm/Instructions.h" #include "llvm/Support/CFG.h" @@ -90,8 +91,9 @@ unsigned GlobalBaseReg; public: - X86DAGToDAGISel(TargetMachine &TM) - : SelectionDAGISel(X86Lowering), X86Lowering(TM) { + X86DAGToDAGISel(X86TargetMachine &TM) + : SelectionDAGISel(X86Lowering), + X86Lowering(*TM.getTargetLowering()) { Subtarget = &TM.getSubtarget<X86Subtarget>(); } @@ -842,6 +844,6 @@ /// createX86ISelDag - This pass converts a legalized DAG into a /// X86-specific DAG, ready for instruction scheduling. /// -FunctionPass *llvm::createX86ISelDag(TargetMachine &TM) { +FunctionPass *llvm::createX86ISelDag(X86TargetMachine &TM) { return new X86DAGToDAGISel(TM); } Index: llvm/lib/Target/X86/X86ISelLowering.h diff -u llvm/lib/Target/X86/X86ISelLowering.h:1.32 llvm/lib/Target/X86/X86ISelLowering.h:1.33 --- llvm/lib/Target/X86/X86ISelLowering.h:1.32 Thu Feb 23 14:41:18 2006 +++ llvm/lib/Target/X86/X86ISelLowering.h Mon Mar 13 17:20:37 2006 @@ -230,6 +230,12 @@ std::vector<unsigned> getRegClassForInlineAsmConstraint(const std::string &Constraint, MVT::ValueType VT) const; + + /// isLegalAddressImmediate - Return true if the integer value or + /// GlobalValue can be used as the offset of the target addressing mode. + virtual bool isLegalAddressImmediate(int64_t V) const; + virtual bool isLegalAddressImmediate(GlobalValue *GV) const; + private: // C Calling Convention implementation. std::vector<SDOperand> LowerCCCArguments(Function &F, SelectionDAG &DAG); Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.23 llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.24 --- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.23 Mon Mar 6 20:23:26 2006 +++ llvm/lib/Target/X86/X86IntelAsmPrinter.cpp Mon Mar 13 17:20:37 2006 @@ -20,7 +20,6 @@ #include "llvm/Support/Mangler.h" #include "llvm/Target/TargetOptions.h" using namespace llvm; -using namespace x86; /// runOnMachineFunction - This uses the printMachineInstruction() /// method to print assembly for each instruction. Index: llvm/lib/Target/X86/X86IntelAsmPrinter.h diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.10 llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.11 --- llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.10 Mon Mar 6 20:02:57 2006 +++ llvm/lib/Target/X86/X86IntelAsmPrinter.h Mon Mar 13 17:20:37 2006 @@ -16,14 +16,12 @@ #include "X86AsmPrinter.h" #include "llvm/CodeGen/ValueTypes.h" -#include "llvm/Target/TargetMachine.h" #include "llvm/Target/MRegisterInfo.h" namespace llvm { -namespace x86 { struct X86IntelAsmPrinter : public X86SharedAsmPrinter { - X86IntelAsmPrinter(std::ostream &O, TargetMachine &TM) + X86IntelAsmPrinter(std::ostream &O, X86TargetMachine &TM) : X86SharedAsmPrinter(O, TM) { } virtual const char *getPassName() const { @@ -91,7 +89,6 @@ bool doInitialization(Module &M); }; -} // end namespace x86 } // end namespace llvm #endif Index: llvm/lib/Target/X86/X86JITInfo.h diff -u llvm/lib/Target/X86/X86JITInfo.h:1.7 llvm/lib/Target/X86/X86JITInfo.h:1.8 --- llvm/lib/Target/X86/X86JITInfo.h:1.7 Fri Jul 29 18:32:02 2005 +++ llvm/lib/Target/X86/X86JITInfo.h Mon Mar 13 17:20:37 2006 @@ -17,13 +17,13 @@ #include "llvm/Target/TargetJITInfo.h" namespace llvm { - class TargetMachine; + class X86TargetMachine; class IntrinsicLowering; class X86JITInfo : public TargetJITInfo { - TargetMachine &TM; + X86TargetMachine &TM; public: - X86JITInfo(TargetMachine &tm) : TM(tm) {useGOT = 0;} + X86JITInfo(X86TargetMachine &tm) : TM(tm) {useGOT = 0;} /// addPassesToJITCompile - Add passes to the specified pass manager to /// implement a fast dynamic compiler for this target. Return true if this Index: llvm/lib/Target/X86/X86TargetMachine.cpp diff -u llvm/lib/Target/X86/X86TargetMachine.cpp:1.106 llvm/lib/Target/X86/X86TargetMachine.cpp:1.107 --- llvm/lib/Target/X86/X86TargetMachine.cpp:1.106 Thu Mar 9 15:51:28 2006 +++ llvm/lib/Target/X86/X86TargetMachine.cpp Mon Mar 13 17:20:37 2006 @@ -79,7 +79,7 @@ Subtarget(M, FS), FrameInfo(TargetFrameInfo::StackGrowsDown, Subtarget.getStackAlignment(), -4), - JITInfo(*this) { + JITInfo(*this), TLInfo(*this) { if (getRelocationModel() == Reloc::Default) if (Subtarget.isTargetDarwin()) setRelocationModel(Reloc::DynamicNoPIC); @@ -97,7 +97,7 @@ FileType != TargetMachine::ObjectFile) return true; // Run loop strength reduction before anything else. - if (EnableX86LSR) PM.add(createLoopStrengthReducePass()); + if (EnableX86LSR) PM.add(createLoopStrengthReducePass(1, &TLInfo)); // FIXME: Implement efficient support for garbage collection intrinsics. PM.add(createLowerGCPass()); @@ -164,6 +164,10 @@ // The JIT should use static relocation model. TM.setRelocationModel(Reloc::Static); + // Run loop strength reduction before anything else. + if (EnableX86LSR) + PM.add(createLoopStrengthReducePass(1, TM.getTargetLowering())); + // FIXME: Implement efficient support for garbage collection intrinsics. PM.add(createLowerGCPass()); Index: llvm/lib/Target/X86/X86TargetMachine.h diff -u llvm/lib/Target/X86/X86TargetMachine.h:1.31 llvm/lib/Target/X86/X86TargetMachine.h:1.32 --- llvm/lib/Target/X86/X86TargetMachine.h:1.31 Mon Nov 7 20:11:51 2005 +++ llvm/lib/Target/X86/X86TargetMachine.h Mon Mar 13 17:20:37 2006 @@ -17,18 +17,21 @@ #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetFrameInfo.h" #include "llvm/PassManager.h" +#include "X86.h" #include "X86InstrInfo.h" #include "X86JITInfo.h" #include "X86Subtarget.h" +#include "X86ISelLowering.h" namespace llvm { class IntrinsicLowering; class X86TargetMachine : public TargetMachine { - X86InstrInfo InstrInfo; - X86Subtarget Subtarget; - TargetFrameInfo FrameInfo; - X86JITInfo JITInfo; + X86InstrInfo InstrInfo; + X86Subtarget Subtarget; + TargetFrameInfo FrameInfo; + X86JITInfo JITInfo; + X86TargetLowering TLInfo; public: X86TargetMachine(const Module &M, IntrinsicLowering *IL, const std::string &FS); @@ -37,6 +40,7 @@ virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } virtual TargetJITInfo *getJITInfo() { return &JITInfo; } virtual const TargetSubtarget *getSubtargetImpl() const{ return &Subtarget; } + virtual X86TargetLowering *getTargetLowering() { return &TLInfo; } virtual const MRegisterInfo *getRegisterInfo() const { return &InstrInfo.getRegisterInfo(); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits