6 #if __CHAR_BIT__ == 8 && __SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 && __SIZEOF_SHORT__ == 2
7 unsigned long long wq
[256], rq
[256];
8 unsigned int wi
[256], ri
[256];
9 unsigned short ws
[256], rs
[256];
10 unsigned char wc
[256], rc
[256];
13 __builtin_memset (wq
, 0, sizeof wq
);
14 __builtin_memset (wi
, 0, sizeof wi
);
15 __builtin_memset (ws
, 0, sizeof ws
);
16 __builtin_memset (wc
, 0, sizeof wc
);
17 wq
[0] = 0x0123456789abcdefULL
;
22 asm volatile ("" : : "g" (wq
), "g" (wi
), "g" (ws
), "g" (wc
) : "memory");
24 for (t
= 0; t
< 256; ++t
)
25 rq
[t
] = (wq
[t
] >> 8) | (wq
[t
] << (sizeof (wq
[0]) * __CHAR_BIT__
- 8));
26 for (t
= 0; t
< 256; ++t
)
27 ri
[t
] = (wi
[t
] >> 8) | (wi
[t
] << (sizeof (wi
[0]) * __CHAR_BIT__
- 8));
28 for (t
= 0; t
< 256; ++t
)
29 rs
[t
] = (ws
[t
] >> 9) | (ws
[t
] << (sizeof (ws
[0]) * __CHAR_BIT__
- 9));
30 for (t
= 0; t
< 256; ++t
)
31 rc
[t
] = (wc
[t
] >> 5) | (wc
[t
] << (sizeof (wc
[0]) * __CHAR_BIT__
- 5));
33 asm volatile ("" : : "g" (rq
), "g" (ri
), "g" (rs
), "g" (rc
) : "memory");
35 if (rq
[0] != 0xef0123456789abcdULL
|| rq
[1])
37 if (ri
[0] != 0x67012345 || ri
[1])
39 if (rs
[0] != 0xb3a2 || rs
[1])
41 if (rc
[0] != 0x9b || rc
[1])