I'm somewhat confused by the uint4/float4 data type. I was told previously to use uint4's for extra speed when coding OpenCL kernels for my HD4870 GPU, but there seems to be a little ambiguity in terms of what a uint4 is. A quick Google search tells me it's simply a 4-byte unsigned integer, but deeper research reveals in the context of OpenCL it's actually a vector type, consisting of 4 integers woven into one variable. How does this work? Is it like a typedef struct where you can access each element of the object? How big are the four integers? Can anyone show me or link me to some example code showing how to set and retrieve these (including the four integer elements) and also show me how to define the uint4 data type correctly in non-OpenCL C code (so I can declare uint4's in my calling application and pass them into the OpenCL kernel).