1234353Sdim//===-- ARMInstrInfo.h - ARM Instruction Information ------------*- C++ -*-===//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed//
10193323Sed// This file contains the ARM implementation of the TargetInstrInfo class.
11193323Sed//
12193323Sed//===----------------------------------------------------------------------===//
13193323Sed
14193323Sed#ifndef ARMINSTRUCTIONINFO_H
15193323Sed#define ARMINSTRUCTIONINFO_H
16193323Sed
17234353Sdim#include "ARM.h"
18198090Srdivacky#include "ARMBaseInstrInfo.h"
19193323Sed#include "ARMRegisterInfo.h"
20198090Srdivacky#include "ARMSubtarget.h"
21193323Sed
22193323Sednamespace llvm {
23193323Sed  class ARMSubtarget;
24193323Sed
25195340Sedclass ARMInstrInfo : public ARMBaseInstrInfo {
26195340Sed  ARMRegisterInfo RI;
27195340Sedpublic:
28195340Sed  explicit ARMInstrInfo(const ARMSubtarget &STI);
29195340Sed
30234353Sdim  /// getNoopForMachoTarget - Return the noop instruction to use for a noop.
31234353Sdim  void getNoopForMachoTarget(MCInst &NopInst) const;
32234353Sdim
33198090Srdivacky  // Return the non-pre/post incrementing version of 'Opc'. Return 0
34198090Srdivacky  // if there is not such an opcode.
35198090Srdivacky  unsigned getUnindexedOpcode(unsigned Opc) const;
36198090Srdivacky
37195340Sed  /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info.  As
38195340Sed  /// such, whenever a client has an instance of instruction info, it should
39195340Sed  /// always be able to get register info as well (through this method).
40195340Sed  ///
41195340Sed  const ARMRegisterInfo &getRegisterInfo() const { return RI; }
42195340Sed};
43195340Sed
44193323Sed}
45193323Sed
46193323Sed#endif
47