]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | //=-- HexagonTargetMachine.h - Define TargetMachine for Hexagon ---*- C++ -*-=// |
2 | // | |
3 | // The LLVM Compiler Infrastructure | |
4 | // | |
5 | // This file is distributed under the University of Illinois Open Source | |
6 | // License. See LICENSE.TXT for details. | |
7 | // | |
8 | //===----------------------------------------------------------------------===// | |
9 | // | |
10 | // This file declares the Hexagon specific subclass of TargetMachine. | |
11 | // | |
12 | //===----------------------------------------------------------------------===// | |
13 | ||
1a4d82fc JJ |
14 | #ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETMACHINE_H |
15 | #define LLVM_LIB_TARGET_HEXAGON_HEXAGONTARGETMACHINE_H | |
223e47cc | 16 | |
970d7e83 | 17 | #include "HexagonInstrInfo.h" |
970d7e83 | 18 | #include "HexagonSubtarget.h" |
223e47cc | 19 | #include "llvm/Target/TargetMachine.h" |
223e47cc LB |
20 | |
21 | namespace llvm { | |
22 | ||
23 | class Module; | |
24 | ||
25 | class HexagonTargetMachine : public LLVMTargetMachine { | |
85aaf69f | 26 | std::unique_ptr<TargetLoweringObjectFile> TLOF; |
223e47cc | 27 | HexagonSubtarget Subtarget; |
223e47cc LB |
28 | |
29 | public: | |
30 | HexagonTargetMachine(const Target &T, StringRef TT,StringRef CPU, | |
31 | StringRef FS, const TargetOptions &Options, | |
32 | Reloc::Model RM, CodeModel::Model CM, | |
33 | CodeGenOpt::Level OL); | |
85aaf69f | 34 | ~HexagonTargetMachine() override; |
223e47cc | 35 | |
1a4d82fc | 36 | const HexagonSubtarget *getSubtargetImpl() const override { |
223e47cc LB |
37 | return &Subtarget; |
38 | } | |
223e47cc LB |
39 | static unsigned getModuleMatchQuality(const Module &M); |
40 | ||
1a4d82fc | 41 | TargetPassConfig *createPassConfig(PassManagerBase &PM) override; |
85aaf69f SL |
42 | |
43 | TargetLoweringObjectFile *getObjFileLowering() const override { | |
44 | return TLOF.get(); | |
45 | } | |
223e47cc LB |
46 | }; |
47 | ||
48 | extern bool flag_aligned_memcpy; | |
49 | ||
50 | } // end namespace llvm | |
51 | ||
52 | #endif |