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 Levonstatic u16 swap16v(u16 a) 61f5207b7SJohn Levon { 71f5207b7SJohn Levon return __builtin_bswap16(a); 81f5207b7SJohn Levon } 91f5207b7SJohn Levon swap32v(u64 a)101f5207b7SJohn Levonstatic u32 swap32v(u64 a) 111f5207b7SJohn Levon { 121f5207b7SJohn Levon return __builtin_bswap32(a); 131f5207b7SJohn Levon } 141f5207b7SJohn Levon swap64v(u32 a)151f5207b7SJohn Levonstatic 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