blob: 52f6e7e9c7c82f0ea9b2ac4f17b4380e9b567f2d [file] [log] [blame]
Nikolai Bozhenovebbde142017-09-19 11:54:29 +00001//===-- Nios2InstrInfo.h - Nios2 Instruction Information --------*- 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//
10// This file contains the Nios2 implementation of the TargetInstrInfo class.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_NIOS2_NIOS2INSTRINFO_H
15#define LLVM_LIB_TARGET_NIOS2_NIOS2INSTRINFO_H
16
Nikolai Bozhenovebbde142017-09-19 11:54:29 +000017#include "Nios2RegisterInfo.h"
David Blaikie3f833ed2017-11-08 01:01:31 +000018#include "llvm/CodeGen/TargetInstrInfo.h"
Nikolai Bozhenovebbde142017-09-19 11:54:29 +000019
20#define GET_INSTRINFO_HEADER
21#include "Nios2GenInstrInfo.inc"
22
23namespace llvm {
24
Nikolai Bozhenov1cf9c542017-12-07 12:35:02 +000025class Nios2Subtarget;
26
Nikolai Bozhenovebbde142017-09-19 11:54:29 +000027class Nios2InstrInfo : public Nios2GenInstrInfo {
Nikolai Bozhenovebbde142017-09-19 11:54:29 +000028 const Nios2RegisterInfo RI;
Nikolai Bozhenov1cf9c542017-12-07 12:35:02 +000029 const Nios2Subtarget &Subtarget;
30 virtual void anchor();
Nikolai Bozhenovebbde142017-09-19 11:54:29 +000031
32public:
Nikolai Bozhenov1cf9c542017-12-07 12:35:02 +000033 explicit Nios2InstrInfo(Nios2Subtarget &ST);
Nikolai Bozhenovebbde142017-09-19 11:54:29 +000034
35 /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As
36 /// such, whenever a client has an instance of instruction info, it should
37 /// always be able to get register info as well (through this method).
38 ///
Nikolai Bozhenov1cf9c542017-12-07 12:35:02 +000039 const Nios2RegisterInfo &getRegisterInfo() const { return RI; };
40
41 bool expandPostRAPseudo(MachineInstr &MI) const override;
Nikolai Bozhenoveededda2018-01-09 11:15:08 +000042
43 void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
44 const DebugLoc &DL, unsigned DestReg, unsigned SrcReg,
45 bool KillSrc) const override;
Nikolai Bozhenovebbde142017-09-19 11:54:29 +000046};
47} // namespace llvm
48
49#endif