diff --git a/common_x86.h b/common_x86.h index 4cf783473..4f538c948 100644 --- a/common_x86.h +++ b/common_x86.h @@ -178,7 +178,13 @@ static __inline int blas_quickdivide(unsigned int x, unsigned int y){ result = x/y; return result; #else - +#if (MAX_CPU_NUMBER > 64) + if ( y > 64) { + result = x/y; + return result; + } +#endif + y = blas_quick_divide_table[y]; __asm__ __volatile__ ("mull %0" :"=d" (result) :"a"(x), "0" (y)); diff --git a/common_x86_64.h b/common_x86_64.h index 1cc71506a..7461aaf60 100644 --- a/common_x86_64.h +++ b/common_x86_64.h @@ -196,6 +196,13 @@ static __inline int blas_quickdivide(unsigned int x, unsigned int y){ if (y <= 1) return x; +#if (MAX_CPU_NUMBER > 64) + if (y > 64) { + result = x / y; + return result; + } +#endif + y = blas_quick_divide_table[y]; __asm__ __volatile__ ("mull %0" :"=d" (result) :"a"(x), "0" (y));