From ea7b527aa56ad0fe547d3d99b21e845a49a031cb Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Fri, 21 Nov 2008 00:11:16 +0000 Subject: [PATCH] Add UADDO and SADDO nodes. These will be used for determining an overflow condition in an addition operation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59760 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/SelectionDAGNodes.h | 9 ++++++++- lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index 7567ecc0953..ef155d8b7f2 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -249,7 +249,14 @@ namespace ISD { // to them to be chained together for add and sub of arbitrarily large // values. ADDE, SUBE, - + + // Overflow-aware nodes for arithmetic operations. These nodes take two + // operands: the normal lhs and rhs to the add. They produce two results: + // the normal result of the add, and a flag indicating whether an overflow + // occured. These nodes are generated from the llvm.[su]add.with.overflow + // intrinsics. They are lowered by target-dependent code. + SADDO, UADDO, + // Simple binary floating point operators. FADD, FSUB, FMUL, FDIV, FREM, diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 61a04bfdb75..d22a65d2ff8 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -5151,6 +5151,8 @@ std::string SDNode::getOperationName(const SelectionDAG *G) const { case ISD::CARRY_FALSE: return "carry_false"; case ISD::ADDC: return "addc"; case ISD::ADDE: return "adde"; + case ISD::SADDO: return "saddo"; + case ISD::UADDO: return "uaddo"; case ISD::SUBC: return "subc"; case ISD::SUBE: return "sube"; case ISD::SHL_PARTS: return "shl_parts"; -- 2.34.1