constant array of float2 vectors errors when building

In my kernel code I am trying to declare a constant array of float2 vectors like this:

__constant float2 grads[2] = {(float2)(1.0f,0.0f), (float2)(0.0f,1.0f)};

But this gives a rather obscure error when attempting to build the kernel:

ptxas application ptx input, line 11; fatal : Parsing error near ‘,’: syntax error
ptxas fatal : Ptx assembly aborted due to errors
error : Ptx compilation failed: gpu=‘sm_20’, device code=‘cuModuleLoadDataEx_4’
: Considering profile ‘compute_20’ for gpu=‘sm_20’ in ‘cuModuleLoadDataEx_4’
: Retrieving binary for ‘cuModuleLoadDataEx_4’, for gpu=‘sm_20’, usage mode=’ ’
: Considering profile ‘compute_20’ for gpu=‘sm_20’ in ‘cuModuleLoadDataEx_4’
: Control flags for ‘cuModuleLoadDataEx_4’ disable search path
: Ptx binary found for ‘cuModuleLoadDataEx_4’, architecture=‘compute_20’
: Ptx compilation for ‘cuModuleLoadDataEx_4’, for gpu=‘sm_20’, ocg options=’ ’

This works on Mac, but doesn’t work on Linux with the Nvidia OpenCL implementation.
(This is declared at program scope, not inside a function.)

Nvidia bug? Or am I doing something wrong?

(cross posted this from the khronos message board, because it may be Nvidia specific…)

Thanks!