1 typedef union longlong
2 {
3   struct {unsigned short h0, h1, h2, h3;} h;
4   struct {signed long low, high;} si;
5   struct {unsigned long low, high;} ui;
6   signed long long sll;
7   unsigned long long ull;
8 } long_long;
9 
10 
11 long long
__negdi2(u)12 __negdi2 (u)
13      long long u;
14 {
15   long_long uu;
16 
17   uu.sll = u;
18 
19   uu.si.low = -uu.si.low;
20   if (uu.si.low == 0)
21     uu.si.high = -uu.si.high;
22   else
23     uu.si.high = ~uu.si.high;
24 
25   return uu.sll;
26 }
27