blob: 5072cdd60ce46b5619de597ae53fc9916d1f6d94 [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:
Diana Picus895c6aa2016-11-15 16:42:10 +000027 ARMInstructionSelector(const ARMSubtarget &STI,
Diana Picus22274932016-11-11 08:27:37 +000028 const ARMRegisterBankInfo &RBI);
29
30 virtual bool select(MachineInstr &I) const override;
31
32private:
Diana Picus22274932016-11-11 08:27:37 +000033 const ARMBaseInstrInfo &TII;
34 const ARMBaseRegisterInfo &TRI;
35 const ARMRegisterBankInfo &RBI;
36};
37
38} // End llvm namespace.
39#endif