generic inline function

I have a query in the below given code, i want to make
it generic,inline function (poly(d_x[i],d_func,N)) which is kernel.
Can i call any other inline function having same argument
without changing the function name in kernel.

global void Matrix_generation(float *d_x,float *d_y,float *d_b,float *d_svU,float *d_sig,float *d_func,int M,int N)
{
float tmp=0.0;

     int i=blockIdx.x*blockDim.x+threadIdx.x;
     if(i<M)
    {
    poly(d_x[i],d_func,N);
    if(d_sig[i]==0.0)
    tmp=1.0;
    else
    tmp=1.0/d_sig[i];
    for(int j=0;j<N;j++){
    d_svU[i*N+j]=d_func[j]*tmp;}
    d_b[i]=d_y[i]*tmp;
    }__syncthreads();

}

device void poly(float d_x,float *d_func,int N)
{
int j;
d_func[0]=1.0;
for(j=1;j<N;j++)
{
d_func[j]=d_func[j-1]*d_x;
}
}

There aren’t any function pointers in CUDA and all device functions are inlined at compile time, so short of compiling multiple versions of the kernel, I think the answer is no.

I think you can work around this by using functor objects though. I believe this is the way thrust works. Take a look at the saxpy_functor here:

http://code.google.com/p/thrust/wiki/QuickStartGuide