blob: 3b32ce4746d2443200c404e2049d007aa3ca791d [file] [log] [blame]
Diana Picus22274932016-11-11 08:27:37 +00001//===- 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
18namespace llvm {
19class ARMBaseInstrInfo;
20class ARMBaseRegisterInfo;
21class ARMBaseTargetMachine;
22class ARMRegisterBankInfo;
23class ARMSubtarget;
24
25class ARMInstructionSelector : public InstructionSelector {
26public:
27 ARMInstructionSelector(const ARMBaseTargetMachine &TM,
28 const ARMSubtarget &STI,
29 const ARMRegisterBankInfo &RBI);
30
31 virtual bool select(MachineInstr &I) const override;
32
33private:
34 const ARMBaseTargetMachine &TM;
35 const ARMSubtarget &STI;
36 const ARMBaseInstrInfo &TII;
37 const ARMBaseRegisterInfo &TRI;
38 const ARMRegisterBankInfo &RBI;
39};
40
41} // End llvm namespace.
42#endif