From 37a6a455466e5b197311771a777ab241e471ed8a Mon Sep 17 00:00:00 2001 From: Edward O'Callaghan Date: Fri, 7 Aug 2009 20:30:09 +0000 Subject: Code style and Readability fixes. Credit to Craig van Vliet. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@78403 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/udivmodti4.c | 221 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 118 insertions(+), 103 deletions(-) (limited to 'lib/udivmodti4.c') diff --git a/lib/udivmodti4.c b/lib/udivmodti4.c index 79cf6f2f..12fa49cd 100644 --- a/lib/udivmodti4.c +++ b/lib/udivmodti4.c @@ -1,24 +1,26 @@ -//===-- udivmodti4.c - Implement __udivmodti4 -----------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file implements __udivmodti4 for the compiler_rt library. -// -//===----------------------------------------------------------------------===// +/* ===-- udivmodti4.c - Implement __udivmodti4 -----------------------------=== + * + * The LLVM Compiler Infrastructure + * + * This file is distributed under the University of Illinois Open Source + * License. See LICENSE.TXT for details. + * + * ===----------------------------------------------------------------------=== + * + * This file implements __udivmodti4 for the compiler_rt library. + * + * ===----------------------------------------------------------------------=== + */ #if __x86_64 #include "int_lib.h" -// Effects: if rem != 0, *rem = a % b -// Returns: a / b +/* Effects: if rem != 0, *rem = a % b + * Returns: a / b + */ -// Translated from Figure 3-40 of The PowerPC Compiler Writer's Guide +/* Translated from Figure 3-40 of The PowerPC Compiler Writer's Guide */ tu_int __udivmodti4(tu_int a, tu_int b, tu_int* rem) @@ -32,43 +34,47 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) utwords q; utwords r; unsigned sr; - // special cases, X is unknown, K != 0 + /* special cases, X is unknown, K != 0 */ if (n.high == 0) { if (d.high == 0) { - // 0 X - // --- - // 0 X + /* 0 X + * --- + * 0 X + */ if (rem) *rem = n.low % d.low; return n.low / d.low; } - // 0 X - // --- - // K X + /* 0 X + * --- + * K X + */ if (rem) *rem = n.low; return 0; } - // n.high != 0 + /* n.high != 0 */ if (d.low == 0) { if (d.high == 0) { - // K X - // --- - // 0 0 + /* K X + * --- + * 0 0 + */ if (rem) *rem = n.high % d.low; return n.high / d.low; } - // d.high != 0 + /* d.high != 0 */ if (n.low == 0) { - // K 0 - // --- - // K 0 + /* K 0 + * --- + * K 0 + */ if (rem) { r.high = n.high % d.high; @@ -77,10 +83,11 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) } return n.high / d.high; } - // K K - // --- - // K 0 - if ((d.high & (d.high - 1)) == 0) // if d is a power of 2 + /* K K + * --- + * K 0 + */ + if ((d.high & (d.high - 1)) == 0) /* if d is a power of 2 */ { if (rem) { @@ -90,11 +97,12 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) } return n.high >> __builtin_ctzll(d.high); } - // K K - // --- - // K 0 + /* K K + * --- + * K 0 + */ sr = __builtin_clzll(d.high) - __builtin_clzll(n.high); - // 0 <= sr <= n_udword_bits - 2 or sr large + /* 0 <= sr <= n_udword_bits - 2 or sr large */ if (sr > n_udword_bits - 2) { if (rem) @@ -102,22 +110,23 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) return 0; } ++sr; - // 1 <= sr <= n_udword_bits - 1 - // q.all = n.all << (n_utword_bits - 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); - // r.all = n.all >> sr; + /* r.all = n.all >> sr; */ r.high = n.high >> sr; r.low = (n.high << (n_udword_bits - sr)) | (n.low >> sr); } - else // d.low != 0 + else /* d.low != 0 */ { if (d.high == 0) { - // K X - // --- - // 0 K - if ((d.low & (d.low - 1)) == 0) // if d is a power of 2 + /* K X + * --- + * 0 K + */ + if ((d.low & (d.low - 1)) == 0) /* if d is a power of 2 */ { if (rem) *rem = n.low & (d.low - 1); @@ -128,36 +137,38 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) q.low = (n.high << (n_udword_bits - sr)) | (n.low >> sr); return q.all; } - // K X - // --- - // 0 K + /* K X + * --- + * 0 K + */ sr = 1 + n_udword_bits + __builtin_clzll(d.low) - __builtin_clzll(n.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; - // } - // 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); - // } - // 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); - // } + /* 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; + * } + * 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); + * } + * 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.low = (n.low << (n_utword_bits - sr)) & ((di_int)(int)(n_udword_bits - sr) >> (n_udword_bits-1)); q.high = ((n.low << ( n_udword_bits - sr)) & @@ -175,11 +186,12 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) } else { - // K X - // --- - // K K + /* K X + * --- + * K K + */ sr = __builtin_clzll(d.high) - __builtin_clzll(n.high); - // 0 <= sr <= n_udword_bits - 1 or sr large + /*0 <= sr <= n_udword_bits - 1 or sr large */ if (sr > n_udword_bits - 1) { if (rem) @@ -187,21 +199,22 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) return 0; } ++sr; - // 1 <= sr <= n_udword_bits - // q.all = n.all << (n_utword_bits - 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); - // 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); - // } - // else - // { - // r.high = 0; - // r.low = n.high; - // } + /* 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); + * } + * else + * { + * r.high = 0; + * r.low = n.high; + * } + */ r.high = (n.high >> sr) & ((di_int)(int)(sr - n_udword_bits) >> (n_udword_bits-1)); r.low = (n.high << (n_udword_bits - sr)) | @@ -209,25 +222,27 @@ __udivmodti4(tu_int a, tu_int b, tu_int* rem) ((di_int)(int)(sr - n_udword_bits) >> (n_udword_bits-1))); } } - // Not a special case - // q and r are initialized with: - // q.all = n.all << (n_utword_bits - sr); - // r.all = n.all >> sr; - // 1 <= sr <= n_utword_bits - 1 + /* Not a special case + * q and r are initialized with: + * q.all = n.all << (n_utword_bits - sr); + * r.all = n.all >> sr; + * 1 <= sr <= n_utword_bits - 1 + */ su_int carry = 0; for (; sr > 0; --sr) { - // r:q = ((r:q) << 1) | carry + /* 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; - // carry = 0; - // if (r.all >= d.all) - // { - // r.all -= d.all; - // carry = 1; - // } + /* carry = 0; + * if (r.all >= d.all) + * { + * r.all -= d.all; + * carry = 1; + * } + */ const ti_int s = (ti_int)(d.all - r.all - 1) >> (n_utword_bits - 1); carry = s & 1; r.all -= d.all & s; -- cgit v1.2.3