comparison lib/Target/PowerPC/PPCTargetMachine.h @ 95:afa8332a0e37

LLVM 3.8
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Tue, 13 Oct 2015 17:48:58 +0900
parents 60c9769439b8
children 1172e4bd9c6f
comparison
equal deleted inserted replaced
84:f3e34b893a5f 95:afa8332a0e37
27 public: 27 public:
28 enum PPCABI { PPC_ABI_UNKNOWN, PPC_ABI_ELFv1, PPC_ABI_ELFv2 }; 28 enum PPCABI { PPC_ABI_UNKNOWN, PPC_ABI_ELFv1, PPC_ABI_ELFv2 };
29 private: 29 private:
30 std::unique_ptr<TargetLoweringObjectFile> TLOF; 30 std::unique_ptr<TargetLoweringObjectFile> TLOF;
31 PPCABI TargetABI; 31 PPCABI TargetABI;
32 // Calculates type size & alignment
33 const DataLayout DL;
34 PPCSubtarget Subtarget; 32 PPCSubtarget Subtarget;
35 33
36 mutable StringMap<std::unique_ptr<PPCSubtarget>> SubtargetMap; 34 mutable StringMap<std::unique_ptr<PPCSubtarget>> SubtargetMap;
37 35
38 public: 36 public:
39 PPCTargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, 37 PPCTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
40 const TargetOptions &Options, Reloc::Model RM, 38 StringRef FS, const TargetOptions &Options, Reloc::Model RM,
41 CodeModel::Model CM, CodeGenOpt::Level OL); 39 CodeModel::Model CM, CodeGenOpt::Level OL);
42 40
43 ~PPCTargetMachine() override; 41 ~PPCTargetMachine() override;
44 42
45 const DataLayout *getDataLayout() const override { return &DL; }
46 const PPCSubtarget *getSubtargetImpl() const override { return &Subtarget; }
47 const PPCSubtarget *getSubtargetImpl(const Function &F) const override; 43 const PPCSubtarget *getSubtargetImpl(const Function &F) const override;
48 44
49 // Pass Pipeline Configuration 45 // Pass Pipeline Configuration
50 TargetPassConfig *createPassConfig(PassManagerBase &PM) override; 46 TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
51 47
54 TargetLoweringObjectFile *getObjFileLowering() const override { 50 TargetLoweringObjectFile *getObjFileLowering() const override {
55 return TLOF.get(); 51 return TLOF.get();
56 } 52 }
57 bool isELFv2ABI() const { return TargetABI == PPC_ABI_ELFv2; } 53 bool isELFv2ABI() const { return TargetABI == PPC_ABI_ELFv2; }
58 bool isPPC64() const { 54 bool isPPC64() const {
59 Triple TT(getTargetTriple()); 55 const Triple &TT = getTargetTriple();
60 return (TT.getArch() == Triple::ppc64 || TT.getArch() == Triple::ppc64le); 56 return (TT.getArch() == Triple::ppc64 || TT.getArch() == Triple::ppc64le);
61 }; 57 };
62 }; 58 };
63 59
64 /// PPC32TargetMachine - PowerPC 32-bit target machine. 60 /// PPC32TargetMachine - PowerPC 32-bit target machine.
65 /// 61 ///
66 class PPC32TargetMachine : public PPCTargetMachine { 62 class PPC32TargetMachine : public PPCTargetMachine {
67 virtual void anchor(); 63 virtual void anchor();
68 public: 64 public:
69 PPC32TargetMachine(const Target &T, StringRef TT, 65 PPC32TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
70 StringRef CPU, StringRef FS, const TargetOptions &Options, 66 StringRef FS, const TargetOptions &Options,
71 Reloc::Model RM, CodeModel::Model CM, 67 Reloc::Model RM, CodeModel::Model CM,
72 CodeGenOpt::Level OL); 68 CodeGenOpt::Level OL);
73 }; 69 };
74 70
75 /// PPC64TargetMachine - PowerPC 64-bit target machine. 71 /// PPC64TargetMachine - PowerPC 64-bit target machine.
76 /// 72 ///
77 class PPC64TargetMachine : public PPCTargetMachine { 73 class PPC64TargetMachine : public PPCTargetMachine {
78 virtual void anchor(); 74 virtual void anchor();
79 public: 75 public:
80 PPC64TargetMachine(const Target &T, StringRef TT, 76 PPC64TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
81 StringRef CPU, StringRef FS, const TargetOptions &Options, 77 StringRef FS, const TargetOptions &Options,
82 Reloc::Model RM, CodeModel::Model CM, 78 Reloc::Model RM, CodeModel::Model CM,
83 CodeGenOpt::Level OL); 79 CodeGenOpt::Level OL);
84 }; 80 };
85 81
86 } // end namespace llvm 82 } // end namespace llvm