summaryrefslogtreecommitdiff
path: root/lib/CodeGen/SelectionDAG/LegalizeTypes.h
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2010-06-03 03:49:50 +0000
committerEli Friedman <eli.friedman@gmail.com>2010-06-03 03:49:50 +0000
commit268637ed0f34e10e4125e94c44ff3e2975a19166 (patch)
tree610f0a9753ebeb3ed25fd52c3e281b60d66c0a3e /lib/CodeGen/SelectionDAG/LegalizeTypes.h
parentdb1bf34178aec96559cf2e7190accc484c85d3e2 (diff)
downloadllvm-268637ed0f34e10e4125e94c44ff3e2975a19166.tar.gz
llvm-268637ed0f34e10e4125e94c44ff3e2975a19166.tar.bz2
llvm-268637ed0f34e10e4125e94c44ff3e2975a19166.tar.xz
Implement expansion in type legalization for add/sub with overflow. The
expansion is the same as that used by LegalizeDAG. The resulting code sucks in terms of performance/codesize on x86-32 for a 64-bit operation; I haven't looked into whether different expansions might be better in general. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105378 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/LegalizeTypes.h')
-rw-r--r--lib/CodeGen/SelectionDAG/LegalizeTypes.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeTypes.h b/lib/CodeGen/SelectionDAG/LegalizeTypes.h
index db5e2a1a11..bd86694446 100644
--- a/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+++ b/lib/CodeGen/SelectionDAG/LegalizeTypes.h
@@ -345,6 +345,9 @@ private:
void ExpandIntRes_UREM (SDNode *N, SDValue &Lo, SDValue &Hi);
void ExpandIntRes_Shift (SDNode *N, SDValue &Lo, SDValue &Hi);
+ void ExpandIntRes_SADDSUBO (SDNode *N, SDValue &Lo, SDValue &Hi);
+ void ExpandIntRes_UADDSUBO (SDNode *N, SDValue &Lo, SDValue &Hi);
+
void ExpandShiftByConstant(SDNode *N, unsigned Amt,
SDValue &Lo, SDValue &Hi);
bool ExpandShiftWithKnownAmountBit(SDNode *N, SDValue &Lo, SDValue &Hi);