summaryrefslogtreecommitdiff
path: root/lib/udivmodti4.c
diff options
context:
space:
mode:
authorEdward O'Callaghan <eocallaghan@auroraux.org>2009-08-09 18:41:02 +0000
committerEdward O'Callaghan <eocallaghan@auroraux.org>2009-08-09 18:41:02 +0000
commit8bf1e094893cb24796137b47ee0d46d18d299996 (patch)
tree57669837db32d106ba744be339a354b8055fcfe4 /lib/udivmodti4.c
parent33c134702e274fdbcb1672771a137efb82b498b2 (diff)
downloadcompiler-rt-8bf1e094893cb24796137b47ee0d46d18d299996.tar.gz
compiler-rt-8bf1e094893cb24796137b47ee0d46d18d299996.tar.bz2
compiler-rt-8bf1e094893cb24796137b47ee0d46d18d299996.tar.xz
Refactor to remove un-named struct gnu extension usage. Now ISO C89 and C99 compliant. Comment trailing endifs
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@78537 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/udivmodti4.c')
-rw-r--r--lib/udivmodti4.c140
1 files changed, 70 insertions, 70 deletions
diff --git a/lib/udivmodti4.c b/lib/udivmodti4.c
index 12fa49cd..53b40725 100644
--- a/lib/udivmodti4.c
+++ b/lib/udivmodti4.c
@@ -35,41 +35,41 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
utwords r;
unsigned sr;
/* special cases, X is unknown, K != 0 */
- if (n.high == 0)
+ if (n.s.high == 0)
{
- if (d.high == 0)
+ if (d.s.high == 0)
{
/* 0 X
* ---
* 0 X
*/
if (rem)
- *rem = n.low % d.low;
- return n.low / d.low;
+ *rem = n.s.low % d.s.low;
+ return n.s.low / d.s.low;
}
/* 0 X
* ---
* K X
*/
if (rem)
- *rem = n.low;
+ *rem = n.s.low;
return 0;
}
- /* n.high != 0 */
- if (d.low == 0)
+ /* n.s.high != 0 */
+ if (d.s.low == 0)
{
- if (d.high == 0)
+ if (d.s.high == 0)
{
/* K X
* ---
* 0 0
*/
if (rem)
- *rem = n.high % d.low;
- return n.high / d.low;
+ *rem = n.s.high % d.s.low;
+ return n.s.high / d.s.low;
}
- /* d.high != 0 */
- if (n.low == 0)
+ /* d.s.high != 0 */
+ if (n.s.low == 0)
{
/* K 0
* ---
@@ -77,31 +77,31 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
*/
if (rem)
{
- r.high = n.high % d.high;
- r.low = 0;
+ r.s.high = n.s.high % d.s.high;
+ r.s.low = 0;
*rem = r.all;
}
- return n.high / d.high;
+ return n.s.high / d.s.high;
}
/* K K
* ---
* K 0
*/
- if ((d.high & (d.high - 1)) == 0) /* if d is a power of 2 */
+ if ((d.s.high & (d.s.high - 1)) == 0) /* if d is a power of 2 */
{
if (rem)
{
- r.low = n.low;
- r.high = n.high & (d.high - 1);
+ r.s.low = n.s.low;
+ r.s.high = n.s.high & (d.s.high - 1);
*rem = r.all;
}
- return n.high >> __builtin_ctzll(d.high);
+ return n.s.high >> __builtin_ctzll(d.s.high);
}
/* K K
* ---
* K 0
*/
- sr = __builtin_clzll(d.high) - __builtin_clzll(n.high);
+ sr = __builtin_clzll(d.s.high) - __builtin_clzll(n.s.high);
/* 0 <= sr <= n_udword_bits - 2 or sr large */
if (sr > n_udword_bits - 2)
{
@@ -112,76 +112,76 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
++sr;
/* 1 <= sr <= n_udword_bits - 1 */
/* q.all = n.all << (n_utword_bits - sr); */
- q.low = 0;
- q.high = n.low << (n_udword_bits - sr);
+ q.s.low = 0;
+ q.s.high = n.s.low << (n_udword_bits - sr);
/* r.all = n.all >> sr; */
- r.high = n.high >> sr;
- r.low = (n.high << (n_udword_bits - sr)) | (n.low >> sr);
+ r.s.high = n.s.high >> sr;
+ r.s.low = (n.s.high << (n_udword_bits - sr)) | (n.s.low >> sr);
}
- else /* d.low != 0 */
+ else /* d.s.low != 0 */
{
- if (d.high == 0)
+ if (d.s.high == 0)
{
/* K X
* ---
* 0 K
*/
- if ((d.low & (d.low - 1)) == 0) /* if d is a power of 2 */
+ if ((d.s.low & (d.s.low - 1)) == 0) /* if d is a power of 2 */
{
if (rem)
- *rem = n.low & (d.low - 1);
- if (d.low == 1)
+ *rem = n.s.low & (d.s.low - 1);
+ if (d.s.low == 1)
return n.all;
- unsigned sr = __builtin_ctzll(d.low);
- q.high = n.high >> sr;
- q.low = (n.high << (n_udword_bits - sr)) | (n.low >> sr);
+ unsigned sr = __builtin_ctzll(d.s.low);
+ q.s.high = n.s.high >> sr;
+ q.s.low = (n.s.high << (n_udword_bits - sr)) | (n.s.low >> sr);
return q.all;
}
/* K X
* ---
* 0 K
*/
- sr = 1 + n_udword_bits + __builtin_clzll(d.low)
- - __builtin_clzll(n.high);
+ sr = 1 + n_udword_bits + __builtin_clzll(d.s.low)
+ - __builtin_clzll(n.s.high);
/* 2 <= sr <= n_utword_bits - 1
* q.all = n.all << (n_utword_bits - sr);
* r.all = n.all >> sr;
* if (sr == n_udword_bits)
* {
- * q.low = 0;
- * q.high = n.low;
- * r.high = 0;
- * r.low = n.high;
+ * q.s.low = 0;
+ * q.s.high = n.s.low;
+ * r.s.high = 0;
+ * r.s.low = n.s.high;
* }
* else if (sr < n_udword_bits) // 2 <= sr <= n_udword_bits - 1
* {
- * q.low = 0;
- * q.high = n.low << (n_udword_bits - sr);
- * r.high = n.high >> sr;
- * r.low = (n.high << (n_udword_bits - sr)) | (n.low >> sr);
+ * q.s.low = 0;
+ * q.s.high = n.s.low << (n_udword_bits - sr);
+ * r.s.high = n.s.high >> sr;
+ * r.s.low = (n.s.high << (n_udword_bits - sr)) | (n.s.low >> sr);
* }
* else // n_udword_bits + 1 <= sr <= n_utword_bits - 1
* {
- * q.low = n.low << (n_utword_bits - sr);
- * q.high = (n.high << (n_utword_bits - sr)) |
- * (n.low >> (sr - n_udword_bits));
- * r.high = 0;
- * r.low = n.high >> (sr - n_udword_bits);
+ * q.s.low = n.s.low << (n_utword_bits - sr);
+ * q.s.high = (n.s.high << (n_utword_bits - sr)) |
+ * (n.s.low >> (sr - n_udword_bits));
+ * r.s.high = 0;
+ * r.s.low = n.s.high >> (sr - n_udword_bits);
* }
*/
- q.low = (n.low << (n_utword_bits - sr)) &
+ q.s.low = (n.s.low << (n_utword_bits - sr)) &
((di_int)(int)(n_udword_bits - sr) >> (n_udword_bits-1));
- q.high = ((n.low << ( n_udword_bits - sr)) &
+ q.s.high = ((n.s.low << ( n_udword_bits - sr)) &
((di_int)(int)(sr - n_udword_bits - 1) >> (n_udword_bits-1))) |
- (((n.high << (n_utword_bits - sr)) |
- (n.low >> (sr - n_udword_bits))) &
+ (((n.s.high << (n_utword_bits - sr)) |
+ (n.s.low >> (sr - n_udword_bits))) &
((di_int)(int)(n_udword_bits - sr) >> (n_udword_bits-1)));
- r.high = (n.high >> sr) &
+ r.s.high = (n.s.high >> sr) &
((di_int)(int)(sr - n_udword_bits) >> (n_udword_bits-1));
- r.low = ((n.high >> (sr - n_udword_bits)) &
+ r.s.low = ((n.s.high >> (sr - n_udword_bits)) &
((di_int)(int)(n_udword_bits - sr - 1) >> (n_udword_bits-1))) |
- (((n.high << (n_udword_bits - sr)) |
- (n.low >> sr)) &
+ (((n.s.high << (n_udword_bits - sr)) |
+ (n.s.low >> sr)) &
((di_int)(int)(sr - n_udword_bits) >> (n_udword_bits-1)));
}
else
@@ -190,7 +190,7 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
* ---
* K K
*/
- sr = __builtin_clzll(d.high) - __builtin_clzll(n.high);
+ sr = __builtin_clzll(d.s.high) - __builtin_clzll(n.s.high);
/*0 <= sr <= n_udword_bits - 1 or sr large */
if (sr > n_udword_bits - 1)
{
@@ -201,24 +201,24 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
++sr;
/* 1 <= sr <= n_udword_bits */
/* q.all = n.all << (n_utword_bits - sr); */
- q.low = 0;
- q.high = n.low << (n_udword_bits - sr);
+ q.s.low = 0;
+ q.s.high = n.s.low << (n_udword_bits - sr);
/* r.all = n.all >> sr;
* if (sr < n_udword_bits)
* {
- * r.high = n.high >> sr;
- * r.low = (n.high << (n_udword_bits - sr)) | (n.low >> sr);
+ * r.s.high = n.s.high >> sr;
+ * r.s.low = (n.s.high << (n_udword_bits - sr)) | (n.s.low >> sr);
* }
* else
* {
- * r.high = 0;
- * r.low = n.high;
+ * r.s.high = 0;
+ * r.s.low = n.s.high;
* }
*/
- r.high = (n.high >> sr) &
+ r.s.high = (n.s.high >> sr) &
((di_int)(int)(sr - n_udword_bits) >> (n_udword_bits-1));
- r.low = (n.high << (n_udword_bits - sr)) |
- ((n.low >> sr) &
+ r.s.low = (n.s.high << (n_udword_bits - sr)) |
+ ((n.s.low >> sr) &
((di_int)(int)(sr - n_udword_bits) >> (n_udword_bits-1)));
}
}
@@ -232,10 +232,10 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
for (; sr > 0; --sr)
{
/* r:q = ((r:q) << 1) | carry */
- r.high = (r.high << 1) | (r.low >> (n_udword_bits - 1));
- r.low = (r.low << 1) | (q.high >> (n_udword_bits - 1));
- q.high = (q.high << 1) | (q.low >> (n_udword_bits - 1));
- q.low = (q.low << 1) | carry;
+ r.s.high = (r.s.high << 1) | (r.s.low >> (n_udword_bits - 1));
+ r.s.low = (r.s.low << 1) | (q.s.high >> (n_udword_bits - 1));
+ q.s.high = (q.s.high << 1) | (q.s.low >> (n_udword_bits - 1));
+ q.s.low = (q.s.low << 1) | carry;
/* carry = 0;
* if (r.all >= d.all)
* {
@@ -253,4 +253,4 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem)
return q.all;
}
-#endif
+#endif /* __x86_64 */