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 | 8136d1f8cb8c6d89460ab9750b6d91a157659831 (patch) | |
tree | 72677a346ee69ab0d32fdc17f12d6cc62e0c8947 /lib/CodeGen/SelectionDAG/SelectionDAG.cpp | |
parent | bccc8abc79338d1cfdd5ea20f7288452ddf75b84 (diff) |
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19427 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index f3c18d37d3..224b969694 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/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; } |