I have a constant at the top of my code...

```
__constant uint uintmaxx =  (uint)(  (((ulong)1)<<32) - 1 );

```

It compiles fine on AMD and NVIDIA OpenCL compilers... then executes.

(correct) on ATI cards, returns... 4294967295 or (all 32 bits = 1)

(wrong) on NVIDIA cards, returns... 2147483648 or (only 32'nd bit = 1)

I also tried -1 + 1<<32 and it worked on ATI but not NVIDIA.

What gives? Am I just missing something?

While I'm on the topic of OpenCL compiler differences, does anyone know a good resource that lists the compiler differences between AMD and NVIDIA?