From 71dc932fcb8a1993133abba93dac1f9999532c9d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 24 Oct 2006 16:47:57 +0000 Subject: [PATCH] implement uncond branch insertion, mark branches with isBranch. llvm-svn: 31160 --- lib/Target/ARM/ARMInstrInfo.cpp | 8 ++++++++ lib/Target/ARM/ARMInstrInfo.h | 4 ++++ lib/Target/ARM/ARMInstrInfo.td | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/Target/ARM/ARMInstrInfo.cpp b/lib/Target/ARM/ARMInstrInfo.cpp index 810c254f9c0..c61d83630c9 100644 --- a/lib/Target/ARM/ARMInstrInfo.cpp +++ b/lib/Target/ARM/ARMInstrInfo.cpp @@ -48,3 +48,11 @@ bool ARMInstrInfo::isMoveInstr(const MachineInstr &MI, } return false; } + +void ARMInstrInfo::InsertBranch(MachineBasicBlock &MBB,MachineBasicBlock *TBB, + MachineBasicBlock *FBB, + const std::vector &Cond)const{ + // Can only insert uncond branches so far. + assert(Cond.empty() && !FBB && TBB && "Can only handle uncond branches!"); + BuildMI(&MBB, ARM::b, 1).addMBB(TBB); +} \ No newline at end of file diff --git a/lib/Target/ARM/ARMInstrInfo.h b/lib/Target/ARM/ARMInstrInfo.h index 6318caa8db0..0621c70d14b 100644 --- a/lib/Target/ARM/ARMInstrInfo.h +++ b/lib/Target/ARM/ARMInstrInfo.h @@ -40,6 +40,10 @@ public: /// virtual bool isMoveInstr(const MachineInstr &MI, unsigned &SrcReg, unsigned &DstReg) const; + + virtual void InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, + MachineBasicBlock *FBB, + const std::vector &Cond) const; }; } diff --git a/lib/Target/ARM/ARMInstrInfo.td b/lib/Target/ARM/ARMInstrInfo.td index 816970f1169..f2100e11ca4 100644 --- a/lib/Target/ARM/ARMInstrInfo.td +++ b/lib/Target/ARM/ARMInstrInfo.td @@ -227,7 +227,7 @@ let Defs = [R0] in { def UMULL : IntBinOp<"umull r12,", mulhu>; } -let isTerminator = 1 in { +let isTerminator = 1, isBranch = 1 in { def bcond : InstARM<(ops brtarget:$dst, CCOp:$cc), "b$cc $dst", [(armbr bb:$dst, imm:$cc)]>;