I am trying to use OpenCL Built-in "rotate" function in one of my kernel as given below, but i am getting following errors while compiling :

clBuildProgram Error for -11 Error Number
error: call to 'rotate' is ambiguous
W[0] = rotate(A, 5);
<built-in>:2784:22: note: candidate function
int __OVERLOADABLE__ rotate(int, int);
<built-in>:2785:23: note: candidate function
uint __OVERLOADABLE__ rotate(uint, uint);
<built-in>:2780:23: note: candidate function
char __OVERLOADABLE__ rotate(char, char);
<built-in>:2781:24: note: candidate function
uchar __OVERLOADABLE__ rotate(uchar, uchar);
<built-in>:2782:24: note: candidate function
short __OVERLOADABLE__ rotate(short, short);
<built-in>:2783:25: note: candidate function
ushort __OVERLOADABLE__ rotate(ushort, ushort);

similar for other datatype.....
and so on.......

The kernel I used for demo is as ::
__kernel void demoKernel(__global unsigned int *d_io_2d, long max_size)
long i = get_global_id(0);
if(i >= max_size)
unsigned int A;
A = d_io_2d[i];

unsigned int W[1];
W[0] = rotate(A, 5);

My questions are ::
1. How to use OpenCL Built-in functions? (As in above example, what am i missing actually?)
2. What is the purpose of using Built-in functions?
3. Does it improve the performance?

Thanks !!