diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-01-10 00:07:15 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-01-10 00:07:15 +0000 | 
| commit | 0966a75e766ca859ddb9fc38d171d04a1e189183 (patch) | |
| tree | 96ba712603260be7865e1e89f422ca96ccbafa90 | |
| parent | c892a0db9faab4c36f2276f4675661875b2c84b9 (diff) | |
| download | bcm5719-llvm-0966a75e766ca859ddb9fc38d171d04a1e189183.tar.gz bcm5719-llvm-0966a75e766ca859ddb9fc38d171d04a1e189183.zip  | |
Constant fold shifts, turning this loop:
.LBB_Z5test0PdS__3:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        movl $16000, %ecx
        sarl $3, %ecx
        cmpl %eax, %ecx
        fstpl 16(%esp)
        #FP_REG_KILL
        jg .LBB_Z5test0PdS__3   # no_exit.1
into:
.LBB_Z5test0PdS__3:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        cmpl $2000, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__3   # no_exit.1
llvm-svn: 19427
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index f3c18d37d3d..224b969694d 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -535,6 +535,9 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT,        case ISD::AND  : return getConstant(C1 & C2, VT);        case ISD::OR   : return getConstant(C1 | C2, VT);        case ISD::XOR  : return getConstant(C1 ^ C2, VT); +      case ISD::SHL  : return getConstant(C1 << (int)C2, VT); +      case ISD::SRL  : return getConstant(C1 >> (unsigned)C2, VT); +      case ISD::SRA  : return getConstant(N1C->getSignExtended() >>(int)C2, VT);        default: break;        }  | 

