CUDA __device__ functions of new defined types

If we have defined on the host code area:
struct float_3{
float x;
float y;
float z;
};
and I have transferred some data of this type to the device, can I create device calls of that new type,i.e:

device float_3 foo(float_3 r,float b,int a){
}

Can we create device of any type? Or just int,float, double, void, etc… And is it possible to return a pointer on device? i.e

device float_3* foo(){

}

Hi Luiceur,

Yes, definitely you can create global device variables of user defined types. Some there will be problems in texture creation using this user defined variables.