浏览代码

use avx2 for some stuff

Nicolas Winkler 5 年之前
父节点
当前提交
085bfd2e63
共有 3 个文件被更改,包括 6 次插入2 次删除
  1. 2 2
      libmandel/CMakeLists.txt
  2. 2 0
      libmandel/include/Hardware.h
  3. 2 0
      libmandel/src/Hardware.cpp

+ 2 - 2
libmandel/CMakeLists.txt

@@ -116,12 +116,12 @@ if (ARCH STREQUAL "X86_64" OR ARCH STREQUAL "X86")
 
     if (MSVC)
         set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
-        set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
+        set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS /arch:AVX2)
         set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS /arch:FMA)
         set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS /arch:SSE2)
     else()
         set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS -mavx)
-        set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS -mavx)
+        set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS -mavx2)
         set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS -mfma)
         set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS -msse2)
     endif(MSVC)

+ 2 - 0
libmandel/include/Hardware.h

@@ -26,6 +26,7 @@ private:
 
     bool sse2;
     bool avx;
+    bool avx2;
     bool fma;
     bool avx512;
     bool neon;
@@ -39,6 +40,7 @@ public:
 //#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
     inline bool hasSse2(void) const { return sse2; };
     inline bool hasAvx(void) const { return avx; };
+    inline bool hasAvx2(void) const { return avx2; };
     inline bool hasFma(void) const { return fma; };
     inline bool hasAvx512(void) const { return avx512; };
 //#elif defined(__arm__) || defined(__aarch64__)

+ 2 - 0
libmandel/src/Hardware.cpp

@@ -20,6 +20,7 @@ using mnd::CpuInfo;
 CpuInfo::CpuInfo(void) :
     sse2{ false },
     avx{ false },
+    avx2{ false },
     fma{ false },
     avx512{ false },
     neon{ false }
@@ -107,6 +108,7 @@ CpuInfo::CpuInfo(void) :
 
     sse2 = edx1[26];
     avx = ecx1[28];
+    avx2 = ebx7[5];
     fma = ecx1[12];
     avx512 = ebx7[16];
 }