#endif
*/
-#define MB
-#define WMB
+#ifdef __GNUC__
+#define MB do { __asm__ __volatile__("": : :"memory"); } while (0)
+#define WMB do { __asm__ __volatile__("": : :"memory"); } while (0)
+#else
+#define MB do {} while (0)
+#define WMB do {} while (0)
+#endif
static void __inline blas_lock(volatile BLASULONG *address){
*ecx=cpuinfo[2];
*edx=cpuinfo[3];
#else
- __asm__ __volatile__("cpuid"
+ __asm__ __volatile__("mov $0, %%ecx;"
+ "cpuid"
: "=a" (*eax),
"=b" (*ebx),
"=c" (*ecx),
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));
+ __asm__ __volatile__ ("mull %0" :"=d" (result), "+a"(x) : "0" (y));
return result;
}
#ifdef ASSEMBLER
#if defined(PILEDRIVER) || defined(BULLDOZER) || defined(STEAMROLLER) || defined(EXCAVATOR)
-//Enable some optimazation for barcelona.
+//Enable some optimization for barcelona.
#define BARCELONA_OPTIMIZATION
#endif