diff --git a/CMakeLists.txt b/CMakeLists.txt index 07e65c2ad..6d2c3de41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -256,7 +256,7 @@ if(NCNN_VULKAN) endif() add_subdirectory(glslang) if(NCNN_SHARED_LIB) - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")) target_compile_options(glslang PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden) target_compile_options(OGLCompiler PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden) target_compile_options(OSDependent PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden) diff --git a/cmake/ncnn_add_layer.cmake b/cmake/ncnn_add_layer.cmake index 41805af95..9affe3241 100644 --- a/cmake/ncnn_add_layer.cmake +++ b/cmake/ncnn_add_layer.cmake @@ -150,7 +150,7 @@ macro(ncnn_add_layer class) endif() if(NCNN_RUNTIME_CPU AND NCNN_AVX2 AND NCNN_TARGET_ARCH STREQUAL "x86") - if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")) + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")) ncnn_add_arch_opt_layer(${class} avx2 "/arch:AVX2 /DAVX2 /fp:strict") else() ncnn_add_arch_opt_layer(${class} avx2 "-mfma -mf16c -mavx2") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c7ca4cb1c..28c827dbf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -278,7 +278,7 @@ if(WIN32) target_compile_definitions(ncnn PUBLIC NOMINMAX) endif() -if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")) +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")) target_compile_definitions(ncnn PRIVATE _SCL_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE) if(CMAKE_BUILD_TYPE MATCHES "(Release|RELEASE|release)") @@ -325,7 +325,7 @@ endif() if(NCNN_TARGET_ARCH STREQUAL "x86") if(NCNN_SSE2) - if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")) + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")) target_compile_options(ncnn PRIVATE /arch:SSE2 /D__SSE2__) else() target_compile_options(ncnn PRIVATE -msse2 -msse) @@ -336,7 +336,7 @@ if(NCNN_TARGET_ARCH STREQUAL "x86") endif() if(NOT NCNN_RUNTIME_CPU AND NCNN_AVX2) - if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")) + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")) target_compile_options(ncnn PRIVATE /arch:AVX2) else() target_compile_options(ncnn PRIVATE -mfma -mf16c -mavx2) diff --git a/src/layer/x86/convolution_3x3.h b/src/layer/x86/convolution_3x3.h index de6a0eede..07273acd9 100644 --- a/src/layer/x86/convolution_3x3.h +++ b/src/layer/x86/convolution_3x3.h @@ -1079,7 +1079,7 @@ static void conv3x3s1_winograd43_sse(const Mat& bottom_blob, Mat& top_blob, cons _w5 = _mm256_fmadd_ps(_d3, _5_n, _w5); _w5 = _mm256_add_ps(_w5, _d5); // transpose d to d_t -#if (defined _WIN32 && !(defined __MINGW32__)) +#if (defined _WIN32 && !(defined __MINGW32__) && !__clang__) { _t0.m256_f32[0] = _w0.m256_f32[0]; _t1.m256_f32[0] = _w0.m256_f32[1];