Generalize tcFullMultiply so that the operands can be of differing

part widths.  Also, return the number of parts actually required to
hold the result's value.
Remove an over-cautious condition from rounding of float->hex conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42669 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Neil Booth
2007-10-06 00:24:48 +00:00
parent 88cc699942
commit 978661d053
3 changed files with 30 additions and 20 deletions
+6 -4
View File
@@ -1114,10 +1114,12 @@ public:
static int tcMultiply(integerPart *, const integerPart *,
const integerPart *, unsigned);
/// DST = LHS * RHS, where DST has twice the width as the operands.
/// No overflow occurs. DST must be disjoint from both operands.
static void tcFullMultiply(integerPart *, const integerPart *,
const integerPart *, unsigned);
/// DST = LHS * RHS, where DST has width the sum of the widths of
/// the operands. No overflow occurs. DST must be disjoint from
/// both operands. Returns the number of parts required to hold the
/// result.
static unsigned int tcFullMultiply(integerPart *, const integerPart *,
const integerPart *, unsigned, unsigned);
/// If RHS is zero LHS and REMAINDER are left unchanged, return one.
/// Otherwise set LHS to LHS / RHS with the fractional part