Next round of PPC CR optimizations. For the following code:
authorNate Begeman <natebegeman@mac.com>
Mon, 18 Apr 2005 07:48:09 +0000 (07:48 +0000)
committerNate Begeman <natebegeman@mac.com>
Mon, 18 Apr 2005 07:48:09 +0000 (07:48 +0000)
commit1cbf3abbb8c716721b502da6d5ff75a9755b525a
tree7666aa1cce274dcf9b201e5f392d32c043a2122e
parentea96b5edbbc77fa33f5bf670f8d75730584375fd
Next round of PPC CR optimizations.  For the following code:

int %bar(float %a, float %b, float %c, float %d) {
entry:
    %tmp.1 = setlt float %a, %d
    %tmp.2 = setlt float %b, %d
    %or = or bool %tmp.1, %tmp.2
    %tmp.3 = setgt float %c, %d
    %tmp.4 = or bool %or, %tmp.3
    %tmp.5 = and bool %tmp.4, true
    %retval = cast bool %tmp.5 to int
    ret int %retval
}

We now emit:

_bar:
.LBB_bar_0:     ; entry
        fcmpu cr0, f1, f4
        fcmpu cr1, f2, f4
        cror 0, 0, 4
        fcmpu cr1, f3, f4
        cror 28, 0, 5
        mfcr r2
        rlwinm r3, r2, 29, 31, 31
        blr

Instead of:

_bar:
.LBB_bar_0:     ; entry
        fcmpu cr7, f1, f4
        mfcr r2
        rlwinm r2, r2, 29, 31, 31
        fcmpu cr7, f2, f4
        mfcr r3
        rlwinm r3, r3, 29, 31, 31
        or r2, r2, r3
        fcmpu cr7, f3, f4
        mfcr r3
        rlwinm r3, r3, 30, 31, 31
        or r3, r2, r3
        blr

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