Procházet zdrojové kódy

[hlc] fix prefetch not compiling (#751)

Yuxiao Mao před 7 měsíci
rodič
revize
2800270005
1 změnil soubory, kde provedl 24 přidání a 0 odebrání
  1. 24 0
      src/hlc.h

+ 24 - 0
src/hlc.h

@@ -94,4 +94,28 @@ extern void hl_entry_point();
 #define HL__ENUM_CONSTRUCT__	hl_type *t; int index;
 #define HL__ENUM_INDEX__(v)		((venum*)(v))->index
 
+#if defined(HL_VCC)
+#define __hl_prefetch_m0(addr) _mm_prefetch((char*)addr, _MM_HINT_T0)
+#define __hl_prefetch_m1(addr) _mm_prefetch((char*)addr, _MM_HINT_T1)
+#define __hl_prefetch_m2(addr) _mm_prefetch((char*)addr, _MM_HINT_T2)
+#define __hl_prefetch_m3(addr) _mm_prefetch((char*)addr, _MM_HINT_NTA)
+#ifdef _MM_HINT_ET1
+#define __hl_prefetch_m4(addr) _mm_prefetch((char*)addr, _MM_HINT_ET1)
+#else
+#define __hl_prefetch_m4(addr) _m_prefetchw((char*)addr)
+#endif
+#elif defined(HL_CLANG) || defined (HL_GCC)
+#define __hl_prefetch_m0(addr) __builtin_prefetch((void*)addr, 0, 3)
+#define __hl_prefetch_m1(addr) __builtin_prefetch((void*)addr, 0, 2)
+#define __hl_prefetch_m2(addr) __builtin_prefetch((void*)addr, 0, 1)
+#define __hl_prefetch_m3(addr) __builtin_prefetch((void*)addr, 0, 0)
+#define __hl_prefetch_m4(addr) __builtin_prefetch((void*)addr, 1)
+#elif
+#define __hl_prefetch_m0(addr)
+#define __hl_prefetch_m1(addr)
+#define __hl_prefetch_m2(addr)
+#define __hl_prefetch_m3(addr)
+#define __hl_prefetch_m4(addr)
+#endif
+
 #endif