Minor tweak to the branch selector. When emitting a two-way branch, and if
authorChris Lattner <sabre@nondot.org>
Sat, 1 Oct 2005 23:06:26 +0000 (23:06 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 1 Oct 2005 23:06:26 +0000 (23:06 +0000)
commitca0a4778a8e3036df7e51ed375cc867e6bf024bd
treee7a0176a6e3c1cfb91bcc38b28d21b470ddf32c5
parentb91956e7f80141c198d3348f06164b6990913233
Minor tweak to the branch selector.  When emitting a two-way branch, and if
we're in a single-mbb loop, make sure to emit the backwards branch as the
conditional branch instead of the uncond branch.  For example, emit this:

LBBl29_z__44:
        stw r9, 0(r15)
        stw r9, 4(r15)
        stw r9, 8(r15)
        stw r9, 12(r15)
        addi r15, r15, 16
        addi r8, r8, 1
        cmpw cr0, r8, r28
        ble cr0, LBBl29_z__44
        b LBBl29_z__48                   *** NOT PART OF LOOP

Instead of:

LBBl29_z__44:
        stw r9, 0(r15)
        stw r9, 4(r15)
        stw r9, 8(r15)
        stw r9, 12(r15)
        addi r15, r15, 16
        addi r8, r8, 1
        cmpw cr0, r8, r28
        bgt cr0, LBBl29_z__48            *** PART OF LOOP!
        b LBBl29_z__44

The former sequence has one fewer dispatch group for the loop body.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23582 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCISelDAGToDAG.cpp