/* Header file for libgcc2.c. */
/* Copyright (C) 2000, 2001, 2004, 2005, 2009
Free Software Foundation, Inc.
This file is part of GCC.
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
typedef union
{
struct DWstruct s;
} DWunion;
__asm__ ("sub{l} {%5,%1|%1,%5}\n\tsbb{l} {%3,%0|%0,%3}" \
__asm__ ("mul{l} %3" \
: "%0" ((USItype) (u)), \
"rm" ((USItype) (v)))
__asm__ ("div{l} %4" \
: "=a" ((USItype) (q)), \
"=d" ((USItype) (r)) \
{
if (d1 == 0)
{
{
/* 0q = nn / 0D */
q1 = 0;
/* Remainder in n0. */
}
else
{
/* qq = NN / 0d */
if (d0 == 0)
/* Remainder in n0. */
}
if (rp != 0)
{
}
}
else
{
{
/* 00 = nn / DD */
q0 = 0;
q1 = 0;
/* Remainder in n1n0. */
if (rp != 0)
{
}
}
else
{
/* 0q = NN / dd */
if (bm == 0)
{
/* From (n1 >= d1) /\ (the most significant bit of d1 is set),
conclude (the most significant bit of n1 is set) /\ (the
quotient digit q0 = 0 or 1).
This special case is necessary, not an optimization. */
/* The condition on the next line takes advantage of that
n1 >= d1 (true due to program flow). */
{
q0 = 1;
}
else
q0 = 0;
q1 = 0;
if (rp != 0)
{
}
}
else
{
/* Normalize. */
b = W_TYPE_SIZE - bm;
{
q0--;
}
q1 = 0;
/* Remainder in (n1n0 - m1m0) >> bm. */
if (rp != 0)
{
}
}
}
}
}
{
return __udivmoddi4 (n, d, (UDWtype *) 0);
}
{
UDWtype w;
(void) __udivmoddi4 (u, v, &w);
return w;
}