SparcInstrInfo.h revision 1d6dc974631a8920a4e5a801a6c7cd4753ae8a8e
16645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org//===- SparcV8InstrInfo.h - SparcV8 Instruction Information -----*- C++ -*-===// 26645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// 36645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// The LLVM Compiler Infrastructure 46645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// 56645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// This file was developed by the LLVM research group and is distributed under 66645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// the University of Illinois Open Source License. See LICENSE.TXT for details. 76645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// 86645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org//===----------------------------------------------------------------------===// 96645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// 106645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// This file contains the SparcV8 implementation of the TargetInstrInfo class. 116645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org// 126645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org//===----------------------------------------------------------------------===// 136645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org 146645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org#ifndef SPARCV8INSTRUCTIONINFO_H 156645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org#define SPARCV8INSTRUCTIONINFO_H 166645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org 1749a07ad0977fb118fe91f5c908b6703e2d89dec6commit-bot@chromium.org#include "llvm/Target/TargetInstrInfo.h" 18cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org#include "SparcV8RegisterInfo.h" 196645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org 20cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.orgnamespace llvm { 21cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org 226645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org/// V8II - This namespace holds all of the target specific flags that 236645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org/// instruction info tracks. 24cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org/// 25cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.orgnamespace V8II { 26cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org enum { 27cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org Pseudo = (1<<0), 28cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org Load = (1<<1), 29cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org Store = (1<<2), 302e915b32347aa2c2bcf82aba57c325b8fb81ec53commit-bot@chromium.org DelaySlot = (1<<3) 31cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org }; 326645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org}; 33cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org 34cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.orgclass SparcV8InstrInfo : public TargetInstrInfo { 356645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org const SparcV8RegisterInfo RI; 366645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.orgpublic: 37cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org SparcV8InstrInfo(); 38cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org 39cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As 40cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org /// such, whenever a client has an instance of instruction info, it should 41cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org /// always be able to get register info as well (through this method). 426645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org /// 436645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org virtual const MRegisterInfo &getRegisterInfo() const { return RI; } 446645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org 456645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org /// Return true if the instruction is a register to register move and 466645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org /// leave the source and dest operands in the passed parameters. 476645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org /// 486645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org virtual bool isMoveInstr(const MachineInstr &MI, 496645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org unsigned &SrcReg, unsigned &DstReg) const; 506645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org}; 516645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org 526645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org} 536645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org 546645cde43d7dbf0df76dbda2c089d8f58560e3e2commit-bot@chromium.org#endif 55cdd0f92b1aca0c2164ac1a24d7f14a6ad3cc10f5commit-bot@chromium.org