1 /* NEC LE-IT: For 64Bit OS we extend the double type to hold two int64's
3 * x86-64: __m128 serves as placeholder which also requires the compiler
4 * to align it on 16 byte boundary (as required by cmpxchg16.
5 * Similar things could be done for PowerPC 64bit using a VMX data type... */
7 #if (defined(__x86_64__) && defined(__GNUC__)) || defined(_WIN64)
8 # include <xmmintrin.h>
9 typedef __m128 double_ptr_storage;
10 #elif defined(_WIN32) && !defined(__GNUC__)
11 typedef unsigned __int64 double_ptr_storage;
13 typedef unsigned long long double_ptr_storage;
16 # define AO_HAVE_DOUBLE_PTR_STORAGE
19 double_ptr_storage AO_whole;
20 struct {AO_t AO_v1; AO_t AO_v2;} AO_parts;
23 #define AO_HAVE_double_t
24 #define AO_val1 AO_parts.AO_v1
25 #define AO_val2 AO_parts.AO_v2