14 #ifndef HexagonINSTRUCTIONINFO_H
15 #define HexagonINSTRUCTIONINFO_H
23 #define GET_INSTRINFO_HEADER
24 #include "HexagonGenInstrInfo.inc"
29 virtual void anchor();
63 bool AllowModify)
const;
73 unsigned &SrcReg,
unsigned &SrcReg2,
74 int &Mask,
int &
Value)
const;
78 unsigned DestReg,
unsigned SrcReg,
124 unsigned ExtraPredCycles,
128 unsigned NumTCycles,
unsigned ExtraTCycles,
130 unsigned NumFCycles,
unsigned ExtraFCycles,
140 std::vector<MachineOperand> &Pred)
const;
159 bool isValidOffset(
const int Opcode,
const int Offset)
const;
207 unsigned short OperandNum)
const;
217 int getMatchingCondBranchOpcode(
int Opc,
bool sense)
const;
virtual bool ReverseBranchCondition(SmallVectorImpl< MachineOperand > &Cond) const
bool isSpillPredRegOp(const MachineInstr *MI) const
bool isConditionalLoad(const MachineInstr *MI) const
virtual unsigned RemoveBranch(MachineBasicBlock &MBB) const
virtual void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, DebugLoc DL, unsigned DestReg, unsigned SrcReg, bool KillSrc) const
virtual bool AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const
virtual bool isBranch(const MachineInstr *MI) const
bool isExtendable(const MachineInstr *MI) const
bool isU6_3Immediate(const int value) const
int getMaxValue(const MachineInstr *MI) const
int getDotNewPredJumpOp(MachineInstr *MI, const MachineBranchProbabilityInfo *MBPI) const
bool isU6_2Immediate(const int value) const
virtual bool isPredicated(const MachineInstr *MI) const
int getMinValue(const MachineInstr *MI) const
bool isConstExtended(MachineInstr *MI) const
bool isU6_1Immediate(const int value) const
unsigned short getCExtOpNum(const MachineInstr *MI) const
bool isPostIncrement(const MachineInstr *MI) const
bool isConditionalTransfer(const MachineInstr *MI) const
virtual bool isPredicatedNew(const MachineInstr *MI) const
bool isMemOp(const MachineInstr *MI) const
int GetDotOldOp(const int opc) const
bool isS4_1Immediate(const int value) const
bool isNewValueJumpCandidate(const MachineInstr *MI) const
bool isValidOffset(const int Opcode, const int Offset) const
virtual bool isSchedulingBoundary(const MachineInstr *MI, const MachineBasicBlock *MBB, const MachineFunction &MF) const
unsigned getInvertedPredicatedOpcode(const int Opc) const
bool PredOpcodeHasNot(Opcode_t Opcode) const
unsigned getAddrMode(const MachineInstr *MI) const
virtual MachineInstr * foldMemoryOperandImpl(MachineFunction &MF, MachineInstr *MI, const SmallVectorImpl< unsigned > &Ops, int FrameIndex) const
virtual bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, const BranchProbability &Probability) const
virtual DFAPacketizer * CreateTargetScheduleState(const TargetMachine *TM, const ScheduleDAG *DAG) const
bool isNewValueStore(const MachineInstr *MI) const
virtual void storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
bool isSaveCalleeSavedRegsCall(const MachineInstr *MI) const
bool isDeallocRet(const MachineInstr *MI) const
virtual unsigned InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, const SmallVectorImpl< MachineOperand > &Cond, DebugLoc DL) const
bool isNewValueInst(const MachineInstr *MI) const
unsigned createVR(MachineFunction *MF, MVT VT) const
virtual bool isPredicatedTrue(const MachineInstr *MI) const
virtual bool analyzeCompare(const MachineInstr *MI, unsigned &SrcReg, unsigned &SrcReg2, int &Mask, int &Value) const
For a comparison instruction, return the source registers in SrcReg and SrcReg2 if having two registe...
virtual void loadRegFromAddr(MachineFunction &MF, unsigned DestReg, SmallVectorImpl< MachineOperand > &Addr, const TargetRegisterClass *RC, SmallVectorImpl< MachineInstr * > &NewMIs) const
bool isConditionalStore(const MachineInstr *MI) const
int GetDotNewOp(const MachineInstr *MI) const
bool isU6_0Immediate(const int value) const
HexagonInstrInfo(HexagonSubtarget &ST)
virtual bool PredicateInstruction(MachineInstr *MI, const SmallVectorImpl< MachineOperand > &Cond) const
bool isS6_Immediate(const int value) const
virtual void loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
int GetDotNewPredOp(MachineInstr *MI, const MachineBranchProbabilityInfo *MBPI) const
bool isExtended(const MachineInstr *MI) const
bool isS4_3Immediate(const int value) const
bool isValidAutoIncImm(const EVT VT, const int Offset) const
bool isConditionalALU32(const MachineInstr *MI) const
virtual unsigned isStoreToStackSlot(const MachineInstr *MI, int &FrameIndex) const
bool isOperandExtended(const MachineInstr *MI, unsigned short OperandNum) const
short getNonExtOpcode(const MachineInstr *MI) const
virtual bool isPredicable(MachineInstr *MI) const
bool isS4_0Immediate(const int value) const
virtual const HexagonRegisterInfo & getRegisterInfo() const
bool isU6_Immediate(const int value) const
bool isS8_Immediate(const int value) const
virtual unsigned isLoadFromStackSlot(const MachineInstr *MI, int &FrameIndex) const
LLVM Value Representation.
void immediateExtend(MachineInstr *MI) const
bool isNewValueJump(const MachineInstr *MI) const
virtual bool SubsumesPredicate(const SmallVectorImpl< MachineOperand > &Pred1, const SmallVectorImpl< MachineOperand > &Pred2) const
virtual MachineInstr * foldMemoryOperandImpl(MachineFunction &MF, MachineInstr *MI, const SmallVectorImpl< unsigned > &Ops, MachineInstr *LoadMI) const
virtual void storeRegToAddr(MachineFunction &MF, unsigned SrcReg, bool isKill, SmallVectorImpl< MachineOperand > &Addr, const TargetRegisterClass *RC, SmallVectorImpl< MachineInstr * > &NewMIs) const
bool isNewValue(const MachineInstr *MI) const
bool PredOpcodeHasJMP_c(Opcode_t Opcode) const
virtual bool DefinesPredicate(MachineInstr *MI, std::vector< MachineOperand > &Pred) const
virtual bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, unsigned ExtraPredCycles, const BranchProbability &Probability) const
bool NonExtEquivalentExists(const MachineInstr *MI) const
bool isDotNewInst(const MachineInstr *MI) const
bool isS12_Immediate(const int value) const
bool isS4_2Immediate(const int value) const
bool mayBeNewStore(const MachineInstr *MI) const