2 /* { dg-do assemble } */
4 #if __SIZEOF_SHORT__ == 2 && __SIZEOF_LONG_LONG__ == 8
5 static inline unsigned short
6 baz (unsigned short *x
)
8 union U
{ unsigned short a
; unsigned char b
[2]; } u
= { *x
};
9 u
.b
[0] = ((u
.b
[0] * 0x0802ULL
& 0x22110ULL
)
10 | (u
.b
[0] * 0x8020ULL
& 0x88440ULL
)) * 0x10101ULL
>> 16;
11 u
.b
[1] = ((u
.b
[1] * 0x0802ULL
& 0x22110ULL
)
12 | (u
.b
[1] * 0x8020ULL
& 0x88440ULL
)) * 0x10101ULL
>> 16;
13 unsigned char t
= u
.b
[0];
19 static inline unsigned long long
20 bar (unsigned long long *x
)
22 union U
{ unsigned long long a
; unsigned short b
[4]; } u
= { *x
};
23 u
.b
[0] = baz (&u
.b
[0]);
30 unsigned long long l
= -1ULL;
31 __asm
volatile ("" : : "r" (bar (&l
)));