[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAGNodes.h
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
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(-)
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.
- // 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