mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-11 23:38:05 +00:00
This makes McCat/12-IOtest go 8x faster or so
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27363 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ed5d1afffb
commit
ccd9f98bcb
@ -585,10 +585,22 @@ SDOperand AlphaTargetLowering::LowerOperation(SDOperand Op, SelectionDAG &DAG) {
|
||||
DAG.getNode(AlphaISD::GlobalBaseReg, MVT::i64));
|
||||
}
|
||||
|
||||
case ISD::SDIV:
|
||||
case ISD::UDIV:
|
||||
case ISD::UREM:
|
||||
case ISD::SREM:
|
||||
//Expand only on constant case
|
||||
if (Op.getOperand(1).getOpcode() == ISD::Constant) {
|
||||
MVT::ValueType VT = Op.Val->getValueType(0);
|
||||
unsigned Opc = Op.Val->getOpcode() == ISD::UREM ? ISD::UDIV : ISD::SDIV;
|
||||
SDOperand Tmp1 = Op.Val->getOpcode() == ISD::UREM ?
|
||||
BuildUDIVSequence(Op, &DAG) :
|
||||
BuildSDIVSequence(Op, &DAG);
|
||||
Tmp1 = DAG.getNode(ISD::MUL, VT, Tmp1, Op.getOperand(1));
|
||||
Tmp1 = DAG.getNode(ISD::SUB, VT, Op.getOperand(0), Tmp1);
|
||||
return Tmp1;
|
||||
}
|
||||
//fall through
|
||||
case ISD::SDIV:
|
||||
case ISD::UDIV:
|
||||
if (MVT::isInteger(Op.getValueType())) {
|
||||
const char* opstr = 0;
|
||||
switch(Op.getOpcode()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user