CUDA compiler error related to __int64

#include <cutil.h>

device host inline int ID2BiID__( unsigned __int64 id) // strange: if this is assigned to a float, compiler dies
{
int p = int(id >> (59-3)) ;
return p ;
}

global void test(float *f, const unsigned int64 *node_ids)
{
*f = ID2BiID
( node_ids[0] ) ;
}

void main()
{
float *a ;
unsigned __int64 *b ;
test<<<1, 1>>>( a, b ) ;
}

compile the above program will result in a compiler error:
1>### Assertion failure at line 1440 of …/…/be/cg/cgemit.cxx:
1>### Compiler Error in file C:\DOCUME~1\aaa\LOCALS~1\Temp/tmpxft_00000844_00000000-4.i during Assembly phase:
1>### incorrect register class for operand 0
1>nvopencc ERROR: C:\CUDA\bin/…/open64/lib//be.exe returned non-zero status 1

I have to use an int64 as an id here, any ideas how I could workaround this?

Is this the complete code, I tried to copy and copile the code, I had 6 errors. Few things, you have not assigned any memory to a and b both on device and host. In regards to the error you have mentioned, there is another post http://forums.nvidia.com/index.php?showtopic=39756. I have the same error but from a different context. I am trying to fix it no success till now though.

Hi, this is not the complete code, I just picked up the related code and assembled this short snippet which is intended to repro the compiler error, the code cannot run of course:)