mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Allow PPC B and BLR to be if-converted into some predicated forms
This enables us to form predicated branches (which are the same conditional branches we had before) and also a larger set of predicated returns (including instructions like bdnzlr which is a conditional return and loop-counter decrement all in one). At the moment, if conversion does not capture all possible opportunities. A simple example is provided in early-ret2.ll, where if conversion forms one predicated return, and then the PPCEarlyReturn pass picks up the other one. So, at least for now, we'll keep both mechanisms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179134 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -83,8 +83,17 @@ let isBranch = 1, isTerminator = 1, hasCtrlDep = 1, PPC970_Unit = 7 in {
|
||||
def BDNZ8 : BForm_1<16, 16, 0, 0, (outs), (ins condbrtarget:$dst),
|
||||
"bdnz $dst">;
|
||||
}
|
||||
|
||||
let isReturn = 1, Defs = [CTR8], Uses = [CTR8, LR8, RM] in {
|
||||
def BDZLR8 : XLForm_2_ext<19, 16, 18, 0, 0, (outs), (ins),
|
||||
"bdzlr", BrB, []>;
|
||||
def BDNZLR8 : XLForm_2_ext<19, 16, 16, 0, 0, (outs), (ins),
|
||||
"bdnzlr", BrB, []>;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
let isCall = 1, PPC970_Unit = 7, Defs = [LR8] in {
|
||||
// Convenient aliases for call instructions
|
||||
let Uses = [RM] in {
|
||||
|
Reference in New Issue
Block a user