forked from OSchip/llvm-project
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
This commit is contained in:
parent
c892a0db9f
commit
0966a75e76
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue