Unsupported operation: X87TODP, long double precision (80-bit) math

Hi, I could find anything on searching for these compiler errors. Is there support for double precision math? Is there a compiler option and/or openacc notation to support this?

17, Accelerator restriction: datatype not supported: a
17, Accelerator restriction: unsupported operation: X87TODP

I get these errors from nvc++ when I use ‘long double’ types

long double a;


double a = 1.0L + 2;

Hi carlkyu,

Double precision is supported but the GPU’s don’t support 80-bit long double. These should be downgraded to double when generating the GPU code.

80-bit computation on the CPU is done in the x87 FPU, so the “X87TODP” operation is the cast from long double to double. Possibly due to the “1.0L”.


I’ve updated the topic title for clarity. I couldn’t find anything on this error or this topic… your response clarifies what’s possible.

Thank you!