Mercurial > hg > Members > tobaru > cbc > CbC_llvm
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 |