#include <stdint.h>#include <stddef.h>Go to the source code of this file.
Functions | |
| __libgcc uint64_t | __udivmoddi4 (uint64_t num, uint64_t den, uint64_t *rem) |
| __libgcc uint64_t | __udivdi3 (uint64_t num, uint64_t den) |
| __libgcc uint64_t | __umoddi3 (uint64_t num, uint64_t den) |
| __libgcc int64_t | __divdi3 (int64_t num, int64_t den) |
| __libgcc int64_t | __moddi3 (int64_t num, int64_t den) |
Definition at line 3 of file __udivmoddi4.c.
Referenced by __divdi3(), __moddi3(), __udivdi3(), and __umoddi3().
00004 { 00005 uint64_t quot = 0, qbit = 1; 00006 00007 if ( den == 0 ) { 00008 return 1/((unsigned)den); /* Intentional divide by zero, without 00009 triggering a compiler warning which 00010 would abort the build */ 00011 } 00012 00013 /* Left-justify denominator and count shift */ 00014 while ( (int64_t)den >= 0 ) { 00015 den <<= 1; 00016 qbit <<= 1; 00017 } 00018 00019 while ( qbit ) { 00020 if ( den <= num ) { 00021 num -= den; 00022 quot += qbit; 00023 } 00024 den >>= 1; 00025 qbit >>= 1; 00026 } 00027 00028 if ( rem_p ) 00029 *rem_p = num; 00030 00031 return quot; 00032 }
Definition at line 7 of file __udivdi3.c.
References __udivmoddi4(), and NULL.
00008 { 00009 return __udivmoddi4(num, den, NULL); 00010 }
Definition at line 7 of file __umoddi3.c.
References __udivmoddi4().
00008 { 00009 uint64_t v; 00010 00011 (void) __udivmoddi4(num, den, &v); 00012 return v; 00013 }
Definition at line 7 of file __divdi3.c.
References __udivmoddi4(), and NULL.
00008 { 00009 int minus = 0; 00010 int64_t v; 00011 00012 if ( num < 0 ) { 00013 num = -num; 00014 minus = 1; 00015 } 00016 if ( den < 0 ) { 00017 den = -den; 00018 minus ^= 1; 00019 } 00020 00021 v = __udivmoddi4(num, den, NULL); 00022 if ( minus ) 00023 v = -v; 00024 00025 return v; 00026 }
Definition at line 7 of file __moddi3.c.
References __udivmoddi4().
00008 { 00009 int minus = 0; 00010 int64_t v; 00011 00012 if ( num < 0 ) { 00013 num = -num; 00014 minus = 1; 00015 } 00016 if ( den < 0 ) { 00017 den = -den; 00018 minus ^= 1; 00019 } 00020 00021 (void) __udivmoddi4(num, den, (uint64_t *)&v); 00022 if ( minus ) 00023 v = -v; 00024 00025 return v; 00026 }
1.5.7.1