]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/ARM/ARMInstructionSelector.h
Merge llvm, clang, compiler-rt, libc++, lld and lldb release_40 branch
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / ARM / ARMInstructionSelector.h
1 //===- ARMInstructionSelector ------------------------------------*- 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 /// \file
10 /// This file declares the targeting of the InstructionSelector class for ARM.
11 //===----------------------------------------------------------------------===//
12
13 #ifndef LLVM_LIB_TARGET_ARM_ARMINSTRUCTIONSELECTOR_H
14 #define LLVM_LIB_TARGET_ARM_ARMINSTRUCTIONSELECTOR_H
15
16 #include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
17
18 namespace llvm {
19 class ARMBaseInstrInfo;
20 class ARMBaseRegisterInfo;
21 class ARMBaseTargetMachine;
22 class ARMRegisterBankInfo;
23 class ARMSubtarget;
24
25 class ARMInstructionSelector : public InstructionSelector {
26 public:
27   ARMInstructionSelector(const ARMSubtarget &STI,
28                          const ARMRegisterBankInfo &RBI);
29
30   virtual bool select(MachineInstr &I) const override;
31
32 private:
33   const ARMBaseInstrInfo &TII;
34   const ARMBaseRegisterInfo &TRI;
35   const ARMRegisterBankInfo &RBI;
36 };
37
38 } // End llvm namespace.
39 #endif