diff options
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index cbb6506b65b..e2aad48a2c3 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -190,7 +190,8 @@ namespace {      SDValue visitBUILD_VECTOR(SDNode *N);      SDValue visitCONCAT_VECTORS(SDNode *N);      SDValue visitVECTOR_SHUFFLE(SDNode *N); -    SDValue visitADDO(SDNode *N); +    SDValue visitSADDO(SDNode *N); +    SDValue visitUADDO(SDNode *N);      SDValue XformToShuffleWithZero(SDNode *N);      SDValue ReassociateOps(unsigned Opc, SDValue LHS, SDValue RHS); @@ -728,7 +729,8 @@ SDValue DAGCombiner::visit(SDNode *N) {    case ISD::BUILD_VECTOR:       return visitBUILD_VECTOR(N);    case ISD::CONCAT_VECTORS:     return visitCONCAT_VECTORS(N);    case ISD::VECTOR_SHUFFLE:     return visitVECTOR_SHUFFLE(N); -  case ISD::ADDO:               return visitADDO(N); +  case ISD::SADDO:              return visitSADDO(N); +  case ISD::UADDO:              return visitUADDO(N);    }    return SDValue();  } @@ -5145,7 +5147,7 @@ SDValue DAGCombiner::visitVECTOR_SHUFFLE(SDNode *N) {    return SDValue();  } -SDValue DAGCombiner::visitADDO(SDNode *N) { +SDValue DAGCombiner::visitSADDO(SDNode *N) {    SDValue Chain = N->getOperand(2);    SDValue LHS = N->getOperand(0);    SDValue RHS = N->getOperand(1); @@ -5173,6 +5175,10 @@ SDValue DAGCombiner::visitADDO(SDNode *N) {    return SDValue(N, 0);  } +SDValue DAGCombiner::visitUADDO(SDNode *N) { +  return SDValue(); +} +  /// XformToShuffleWithZero - Returns a vector_shuffle if it able to transform  /// an AND to a vector_shuffle with the destination vector and a zero vector.  /// e.g. AND V, <0xffffffff, 0, 0xffffffff, 0>. ==> | 

