Fix a FIXME: Select instructions on longs were miscompiled.
authorChris Lattner <sabre@nondot.org>
Sat, 1 Jan 2005 16:10:12 +0000 (16:10 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 1 Jan 2005 16:10:12 +0000 (16:10 +0000)
commit6dec0b09d5f01bf2fe4f26209f339310b2de4440
tree1e36ab14572d13b503c892f520f3927396c139eb
parente7f96c515efb92e477217ab97cf1a617901daf79
Fix a FIXME: Select instructions on longs were miscompiled.

While we're at it, improve codegen of select instructions.  For this
testcase:

int %test(bool %C, int %A, int %B) {
  %D = select bool %C, int %A, int %B
  ret int %D
}

We used to generate this code:

_test:
        cmpwi cr0, r3, 0
        bne .LBB_test_2 ;
.LBB_test_1:    ;
        b .LBB_test_3   ;
.LBB_test_2:    ;
        or r5, r4, r4
.LBB_test_3:    ;
        or r3, r5, r5
        blr

Now we emit:

_test:
        cmpwi cr0, r3, 0
        bne .LBB_test_2 ;
.LBB_test_1:    ;
        or r4, r5, r5
.LBB_test_2:    ;
        or r3, r4, r4
        blr

-Chris

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