From: Krzysztof Parzyszek Date: Fri, 23 Mar 2018 20:43:02 +0000 (+0000) Subject: [Hexagon] Make findLoopInstr member of HexagonInstrInfo X-Git-Tag: llvmorg-7.0.0-rc1~9783 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=998df2ca4f4463eef37a7553c3197918843fe3f1;p=platform%2Fupstream%2Fllvm.git [Hexagon] Make findLoopInstr member of HexagonInstrInfo llvm-svn: 328367 --- diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp index 105b6ca..069cd86 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp +++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp @@ -144,9 +144,9 @@ static unsigned nonDbgMICount(MachineBasicBlock::const_instr_iterator MIB, /// On Hexagon, we have two instructions used to set-up the hardware loop /// (LOOP0, LOOP1) with corresponding endloop (ENDLOOP0, ENDLOOP1) instructions /// to indicate the end of a loop. -static MachineInstr *findLoopInstr(MachineBasicBlock *BB, unsigned EndLoopOp, - MachineBasicBlock *TargetBB, - SmallPtrSet &Visited) { +MachineInstr *HexagonInstrInfo::findLoopInstr(MachineBasicBlock *BB, + unsigned EndLoopOp, MachineBasicBlock *TargetBB, + SmallPtrSet &Visited) const { unsigned LOOPi; unsigned LOOPr; if (EndLoopOp == Hexagon::ENDLOOP0) { @@ -1886,6 +1886,10 @@ bool HexagonInstrInfo::isAccumulator(const MachineInstr &MI) const { return((F >> HexagonII::AccumulatorPos) & HexagonII::AccumulatorMask); } +bool HexagonInstrInfo::isBaseImmOffset(const MachineInstr &MI) const { + return getAddrMode(MI) == HexagonII::BaseImmOffset; +} + bool HexagonInstrInfo::isComplex(const MachineInstr &MI) const { return !isTC1(MI) && !isTC2Early(MI) && !MI.getDesc().mayLoad() && !MI.getDesc().mayStore() && diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.h b/llvm/lib/Target/Hexagon/HexagonInstrInfo.h index 39b69d1..795aa1b 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.h +++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.h @@ -346,7 +346,11 @@ public: /// HexagonInstrInfo specifics. unsigned createVR(MachineFunction *MF, MVT VT) const; + MachineInstr *findLoopInstr(MachineBasicBlock *BB, unsigned EndLoopOp, + MachineBasicBlock *TargetBB, + SmallPtrSet &Visited) const; + bool isBaseImmOffset(const MachineInstr &MI) const; bool isAbsoluteSet(const MachineInstr &MI) const; bool isAccumulator(const MachineInstr &MI) const; bool isAddrModeWithOffset(const MachineInstr &MI) const;