First step towards V9 instructions in the V8 backend, two conditional move
authorChris Lattner <sabre@nondot.org>
Mon, 30 Jan 2006 05:35:57 +0000 (05:35 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 30 Jan 2006 05:35:57 +0000 (05:35 +0000)
commit76afdc9a80cf078aebd0ec62dba0bfafe498b1dc
tree6b6145e650a7d51691b5ac2c1d6039369d4e820b
parent6f63001214215287b9bfe6cc066ab7caf83acb62
First step towards V9 instructions in the V8 backend, two conditional move
patterns.  This allows emission of this code:

t1:
        save -96, %o6, %o6
        subcc %i0, %i1, %l0
        move %icc, %i0, %i2
        or %g0, %i2, %i0
        restore %g0, %g0, %g0
        retl
        nop

instead of this:

t1:
        save -96, %o6, %o6
        subcc %i0, %i1, %l0
        be .LBBt1_2     !
        nop
.LBBt1_1:       !
        or %g0, %i2, %i0
.LBBt1_2:       !
        restore %g0, %g0, %g0
        retl
        nop

for this:

int %t1(int %a, int %b, int %c) {
        %tmp.2 = seteq int %a, %b
        %tmp3 = select bool %tmp.2, int %a, int %c
        ret int %tmp3
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25809 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/Sparc/README.txt
lib/Target/Sparc/SparcISelDAGToDAG.cpp
lib/Target/Sparc/SparcInstrInfo.td
lib/Target/SparcV8/README.txt
lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp
lib/Target/SparcV8/SparcV8InstrInfo.td