Enable Eigen to compile on 'pure C/C++' Gcc environment (with no inline assembly or asm directive). Required if we want to use Eigen with Adobe Alchemy.

This commit is contained in:
Zuiquan 2012-02-02 12:05:02 +01:00
parent 13abb37721
commit a64407f086
2 changed files with 16 additions and 14 deletions

View File

@ -255,7 +255,7 @@
// Suppresses 'unused variable' warnings. // Suppresses 'unused variable' warnings.
#define EIGEN_UNUSED_VARIABLE(var) (void)var; #define EIGEN_UNUSED_VARIABLE(var) (void)var;
#if (defined __GNUC__) #if !defined(EIGEN_ASM_COMMENT) && (defined __GNUC__)
#define EIGEN_ASM_COMMENT(X) asm("#" X) #define EIGEN_ASM_COMMENT(X) asm("#" X)
#else #else
#define EIGEN_ASM_COMMENT(X) #define EIGEN_ASM_COMMENT(X)

View File

@ -741,19 +741,21 @@ public:
//---------- Cache sizes ---------- //---------- Cache sizes ----------
#if defined(__GNUC__) && ( defined(__i386__) || defined(__x86_64__) ) #if !defined(EIGEN_NO_CPUID)
# if defined(__PIC__) && defined(__i386__) # if defined(__GNUC__) && ( defined(__i386__) || defined(__x86_64__) )
// Case for x86 with PIC # if defined(__PIC__) && defined(__i386__)
# define EIGEN_CPUID(abcd,func,id) \ // Case for x86 with PIC
__asm__ __volatile__ ("xchgl %%ebx, %%esi;cpuid; xchgl %%ebx,%%esi": "=a" (abcd[0]), "=S" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id)); # define EIGEN_CPUID(abcd,func,id) \
# else __asm__ __volatile__ ("xchgl %%ebx, %%esi;cpuid; xchgl %%ebx,%%esi": "=a" (abcd[0]), "=S" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id));
// Case for x86_64 or x86 w/o PIC # else
# define EIGEN_CPUID(abcd,func,id) \ // Case for x86_64 or x86 w/o PIC
__asm__ __volatile__ ("cpuid": "=a" (abcd[0]), "=b" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id) ); # define EIGEN_CPUID(abcd,func,id) \
# endif __asm__ __volatile__ ("cpuid": "=a" (abcd[0]), "=b" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id) );
#elif defined(_MSC_VER) # endif
# if (_MSC_VER > 1500) # elif defined(_MSC_VER)
# define EIGEN_CPUID(abcd,func,id) __cpuidex((int*)abcd,func,id) # if (_MSC_VER > 1500)
# define EIGEN_CPUID(abcd,func,id) __cpuidex((int*)abcd,func,id)
# endif
# endif # endif
#endif #endif