blob: 952e47e5d1b23ec67f78810bf89d28948f995746 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#if 0
/* THIS IS THE PREVIOUS VERSION, USED ON BOSTAN AND ANDEY */
unsigned long long
udivmoddi4(unsigned long long num, unsigned long long den, int modwanted)
{
unsigned long long r = num, q = 0;
if(den <= r) {
unsigned k = __builtin_clzll (den) - __builtin_clzll (r);
den = den << k;
if(r >= den) {
r = r - den;
q = 1LL << k;
}
if(k != 0) {
unsigned i = k;
den = den >> 1;
do {
r = __builtin_kvx_stsud (den, r);
i--;
} while (i!= 0);
q = q + r;
r = r >> k;
q = q - (r << k);
}
}
return modwanted ? r : q;
}
#endif
|