Add UADDO and SADDO nodes. These will be used for determining an overflow
authorBill Wendling <isanbard@gmail.com>
Fri, 21 Nov 2008 00:11:16 +0000 (00:11 +0000)
committerBill Wendling <isanbard@gmail.com>
Fri, 21 Nov 2008 00:11:16 +0000 (00:11 +0000)
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
lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index 7567ecc0953f1c1fa04a5caa9c41f1d7f54e23b9..ef155d8b7f25bbf10d1c4e7381d2dcb2fc44e324 100644 (file)
@@ -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,
 
index 61a04bfdb7524567032ba42bc0ad2cf102968e2a..d22a65d2ff8eef65b9a60ce9ecb8cb8f4cd75d47 100644 (file)
@@ -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";