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 /llvm/lib/CodeGen | |
| 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
Diffstat (limited to 'llvm/lib/CodeGen')
| -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; } |

