[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAGNodes.h

Nate Begeman natebegeman at mac.com
Thu Feb 16 21:44:11 PST 2006



Changes in directory llvm/include/llvm/CodeGen:

SelectionDAGNodes.h updated: 1.101 -> 1.102
---
Log message:

kill ADD_PARTS & SUB_PARTS and replace them with fancy new ADDC, ADDE, SUBC
and SUBE nodes that actually expose what's going on and allow for 
significant simplifications in the targets.


---
Diffs of the changes:  (+15 -7)

 SelectionDAGNodes.h |   22 +++++++++++++++-------
 1 files changed, 15 insertions(+), 7 deletions(-)


Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h
diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.101 llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.102
--- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.101	Wed Feb  8 20:10:15 2006
+++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h	Thu Feb 16 23:43:56 2006
@@ -118,6 +118,21 @@
     // Simple integer binary arithmetic operators.
     ADD, SUB, MUL, SDIV, UDIV, SREM, UREM,
     
+    // Carry-setting nodes for multiple precision addition and subtraction.
+    // These nodes take two operands of the same value type, and produce two
+    // results.  The first result is the normal add or sub result, the second
+    // result is the carry flag result.
+    ADDC, SUBC,
+    
+    // Carry-using nodes for multiple precision addition and subtraction.  These
+    // nodes take three operands: The first two are the normal lhs and rhs to
+    // the add or sub, and the third is the input carry flag.  These nodes
+    // produce two results; the normal result of the add or sub, and the output
+    // carry flag.  These nodes both read and write a carry flag to allow them
+    // to them to be chained together for add and sub of arbitrarily large
+    // values.
+    ADDE, SUBE,
+    
     // Simple binary floating point operators.
     FADD, FSUB, FMUL, FDIV, FREM,
     
@@ -156,13 +171,6 @@
     // (op #2) as a CondCodeSDNode.
     SETCC,
 
-    // ADD_PARTS/SUB_PARTS - These operators take two logical operands which are
-    // broken into a multiple pieces each, and return the resulting pieces of
-    // doing an atomic add/sub operation.  This is used to handle add/sub of
-    // expanded types.  The operation ordering is:
-    //       [Lo,Hi] = op [LoLHS,HiLHS], [LoRHS,HiRHS]
-    ADD_PARTS, SUB_PARTS,
-
     // SHL_PARTS/SRA_PARTS/SRL_PARTS - These operators are used for expanded
     // integer shift operations, just like ADD/SUB_PARTS.  The operation
     // ordering is:






More information about the llvm-commits mailing list