11f5207b7SJohn Levon typedef unsigned short	   u16;
21f5207b7SJohn Levon typedef unsigned int	   u32;
31f5207b7SJohn Levon typedef unsigned long long u64;
41f5207b7SJohn Levon 
swap16v(u16 a)51f5207b7SJohn Levon static u16 swap16v(u16 a)
61f5207b7SJohn Levon {
71f5207b7SJohn Levon 	return __builtin_bswap16(a);
81f5207b7SJohn Levon }
91f5207b7SJohn Levon 
swap32v(u64 a)101f5207b7SJohn Levon static u32 swap32v(u64 a)
111f5207b7SJohn Levon {
121f5207b7SJohn Levon 	return __builtin_bswap32(a);
131f5207b7SJohn Levon }
141f5207b7SJohn Levon 
swap64v(u32 a)151f5207b7SJohn Levon static u64 swap64v(u32 a)
161f5207b7SJohn Levon {
171f5207b7SJohn Levon 	return __builtin_bswap64(a);
181f5207b7SJohn Levon }
191f5207b7SJohn Levon 
201f5207b7SJohn Levon /*
211f5207b7SJohn Levon  * check-name: builtin-bswap
221f5207b7SJohn Levon  * check-command: test-linearize $file
231f5207b7SJohn Levon  * check-description: Check that the right builtin function is called, and
241f5207b7SJohn Levon  *                    that the args are correctly promoted or truncated.
251f5207b7SJohn Levon  *
261f5207b7SJohn Levon  * check-output-ignore
271f5207b7SJohn Levon  * check-output-contains:call.16 .* __builtin_bswap16
28*c85f09ccSJohn Levon  * check-output-contains:trunc.32 .* (64) %arg1
291f5207b7SJohn Levon  * check-output-contains:call.32 .* __builtin_bswap32
30*c85f09ccSJohn Levon  * check-output-contains:zext.64 .* (32) %arg1
311f5207b7SJohn Levon  * check-output-contains:call.64 .* __builtin_bswap64
321f5207b7SJohn Levon  */
33