MSP430InstrInfo.h revision f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8
1f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===- MSP430InstrInfo.h - MSP430 Instruction Information -------*- C++ -*-===//
2f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
3f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//                     The LLVM Compiler Infrastructure
4f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
5f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file is distributed under the University of Illinois Open Source
6f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// License. See LICENSE.TXT for details.
7f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
8f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===//
9f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
10f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file contains the MSP430 implementation of the TargetInstrInfo class.
11f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
12f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===//
13f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
14f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#ifndef LLVM_TARGET_MSP430INSTRINFO_H
15f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#define LLVM_TARGET_MSP430INSTRINFO_H
16f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
17f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "llvm/Target/TargetInstrInfo.h"
18f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "MSP430RegisterInfo.h"
19f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
20f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovnamespace llvm {
21f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
22f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovclass MSP430TargetMachine;
23f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
24f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovclass MSP430InstrInfo : public TargetInstrInfoImpl {
25f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  const MSP430RegisterInfo RI;
26f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  MSP430TargetMachine &TM;
27f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovpublic:
28f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  explicit MSP430InstrInfo(MSP430TargetMachine &TM);
29f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
30f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info.  As
31f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  /// such, whenever a client has an instance of instruction info, it should
32f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  /// always be able to get register info as well (through this method).
33f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  ///
34f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  virtual const TargetRegisterInfo &getRegisterInfo() const { return RI; }
35f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov};
36f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
37f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
38f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
39f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#endif
40