Oh GACK! src-clean doesn't quite work that easily since cleandist rebuilds the
[unix-history] / gnu / usr.bin / gcc1 / gnulib / longlong / negdi2.c
CommitLineData
15637ed4
RG
1#include "longlong.h"
2
3static int bneg ();
4
5long long
6__negdi2 (u)
7 long long u;
8{
9 unsigned long a[2], b[2];
10 long_long w;
11 long_long uu;
12
13 uu.ll = u;
14
15 a[HIGH] = uu.s.high;
16 a[LOW] = uu.s.low;
17
18 bneg (a, b, sizeof b);
19
20 w.s.high = b[HIGH];
21 w.s.low = b[LOW];
22 return w.ll;
23}
24
25static int
26bneg (a, b, n)
27 unsigned short *a, *b;
28 size_t n;
29{
30 signed long acc;
31 int i;
32
33 n /= sizeof (short);
34
35 acc = 0;
36 for (i = little_end (n); is_not_msd (i, n); i = next_msd (i))
37 {
38 acc -= a[i];
39 b[i] = acc & low16;
40 acc = acc >> 16;
41 }
42 return acc;
43}