Little change in C code, remove isa specific code in std header
This commit is contained in:
@@ -20,22 +20,20 @@ sn_resolve_target_identifiers(
|
|||||||
file(GLOB STGSHARP_NATIVE_SOURCES CONFIGURE_DEPENDS
|
file(GLOB STGSHARP_NATIVE_SOURCES CONFIGURE_DEPENDS
|
||||||
${CMAKE_CURRENT_LIST_DIR}/sn-src/*.c)
|
${CMAKE_CURRENT_LIST_DIR}/sn-src/*.c)
|
||||||
|
|
||||||
list(REMOVE_ITEM STGSHARP_NATIVE_SOURCES
|
file(GLOB STGSHARP_NATIVE_HEADERS CONFIGURE_DEPENDS
|
||||||
${CMAKE_CURRENT_LIST_DIR}/sn-src/formatted.c
|
${CMAKE_CURRENT_LIST_DIR}/sn-head/*.h)
|
||||||
${CMAKE_CURRENT_LIST_DIR}/sn-src/StgSharpC.c)
|
|
||||||
|
file(GLOB STGSHARP_NATIVE_TEMPLATES CONFIGURE_DEPENDS
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.h
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.inl
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.inc
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.ipp)
|
||||||
|
|
||||||
if(NOT STGSHARP_NATIVE_SOURCES)
|
if(NOT STGSHARP_NATIVE_SOURCES)
|
||||||
message(FATAL_ERROR "No source files found under sn-src/.")
|
message(FATAL_ERROR "No source files found under sn-src/.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
get_filename_component(STGSHARP_SOURCE_ROOT ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)
|
get_filename_component(STGSHARP_SOLUTION_ROOT ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)
|
||||||
get_filename_component(STGSHARP_SOURCE_ROOT_NAME ${STGSHARP_SOURCE_ROOT} NAME)
|
|
||||||
|
|
||||||
if(STGSHARP_SOURCE_ROOT_NAME STREQUAL "src")
|
|
||||||
get_filename_component(STGSHARP_SOLUTION_ROOT ${STGSHARP_SOURCE_ROOT} DIRECTORY)
|
|
||||||
else()
|
|
||||||
set(STGSHARP_SOLUTION_ROOT ${STGSHARP_SOURCE_ROOT})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(SN_RESOLVED_OS_NAME STREQUAL "windows")
|
if(SN_RESOLVED_OS_NAME STREQUAL "windows")
|
||||||
set(STGSHARP_OS_TAG win)
|
set(STGSHARP_OS_TAG win)
|
||||||
@@ -57,12 +55,16 @@ else()
|
|||||||
set(STGSHARP_ARCH_TAG ${SN_RESOLVED_ARCH_NAME})
|
set(STGSHARP_ARCH_TAG ${SN_RESOLVED_ARCH_NAME})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(STGSHARP_BUILD_OUTPUT_DIR ${STGSHARP_SOLUTION_ROOT}/cmake_build/${STGSHARP_OS_TAG}_${STGSHARP_ARCH_TAG})
|
set(STGSHARP_BUILD_OUTPUT_DIR ${STGSHARP_SOLUTION_ROOT}/build/${STGSHARP_OS_TAG}-${STGSHARP_ARCH_TAG})
|
||||||
set(STGSHARP_OBJECT_ROOT_DIR ${STGSHARP_SOLUTION_ROOT}/obj/${PROJECT_NAME})
|
set(STGSHARP_OBJECT_ROOT_DIR ${STGSHARP_SOLUTION_ROOT}/obj/${PROJECT_NAME})
|
||||||
|
set(STGSHARP_NATIVE_PROJECT_FILES
|
||||||
|
${STGSHARP_NATIVE_SOURCES}
|
||||||
|
${STGSHARP_NATIVE_HEADERS}
|
||||||
|
${STGSHARP_NATIVE_TEMPLATES})
|
||||||
|
|
||||||
set(STGSHARP_C_FRONTEND_VARIANT "${CMAKE_C_COMPILER_FRONTEND_VARIANT}")
|
add_library(${PROJECT_NAME} SHARED ${STGSHARP_NATIVE_PROJECT_FILES})
|
||||||
|
|
||||||
add_library(${PROJECT_NAME} SHARED ${STGSHARP_NATIVE_SOURCES})
|
source_group(TREE ${CMAKE_CURRENT_LIST_DIR} FILES ${STGSHARP_NATIVE_PROJECT_FILES})
|
||||||
|
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
C_STANDARD 11
|
C_STANDARD 11
|
||||||
@@ -84,25 +86,35 @@ endforeach()
|
|||||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
COMPILE_PDB_OUTPUT_DIRECTORY ${STGSHARP_OBJECT_ROOT_DIR}/$<CONFIG>/${STGSHARP_ARCH_TAG})
|
COMPILE_PDB_OUTPUT_DIRECTORY ${STGSHARP_OBJECT_ROOT_DIR}/$<CONFIG>/${STGSHARP_ARCH_TAG})
|
||||||
|
|
||||||
if(MSVC OR STGSHARP_C_FRONTEND_VARIANT STREQUAL "MSVC")
|
if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||||
/Fd${STGSHARP_OBJECT_ROOT_DIR}/$<CONFIG>/${STGSHARP_ARCH_TAG}/)
|
/Fd${STGSHARP_OBJECT_ROOT_DIR}/$<CONFIG>/${STGSHARP_ARCH_TAG}/)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND SN_RESOLVED_ARCH_NAME STREQUAL "x86_64")
|
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND SN_RESOLVED_ARCH_NAME STREQUAL "x86_64")
|
||||||
if(STGSHARP_C_FRONTEND_VARIANT STREQUAL "MSVC")
|
# Keep the intrinsic type system and builtin declarations visible to all TUs.
|
||||||
|
# The runtime dispatch contract still follows T_arch/T_feature at the function level.
|
||||||
|
if(CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||||
/clang:-mavx
|
/clang:-mavx
|
||||||
/clang:-mavx2
|
/clang:-mavx2
|
||||||
/clang:-mfma
|
/clang:-mfma
|
||||||
|
/clang:-mf16c
|
||||||
/clang:-mavx512f
|
/clang:-mavx512f
|
||||||
|
/clang:-mavx512cd
|
||||||
|
/clang:-mavx512dq
|
||||||
|
/clang:-mavx512bw
|
||||||
/clang:-mavx512vl)
|
/clang:-mavx512vl)
|
||||||
else()
|
else()
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||||
-mavx
|
-mavx
|
||||||
-mavx2
|
-mavx2
|
||||||
-mfma
|
-mfma
|
||||||
|
-mf16c
|
||||||
-mavx512f
|
-mavx512f
|
||||||
|
-mavx512cd
|
||||||
|
-mavx512dq
|
||||||
|
-mavx512bw
|
||||||
-mavx512vl)
|
-mavx512vl)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@@ -128,5 +140,4 @@ endif()
|
|||||||
|
|
||||||
message(STATUS "StgSharp.Native target OS: ${SN_RESOLVED_OS_NAME} (${SN_RESOLVED_OS_DEFINE})")
|
message(STATUS "StgSharp.Native target OS: ${SN_RESOLVED_OS_NAME} (${SN_RESOLVED_OS_DEFINE})")
|
||||||
message(STATUS "StgSharp.Native target ISA: ${SN_RESOLVED_ARCH_NAME} (${SN_RESOLVED_ARCH_DEFINE})")
|
message(STATUS "StgSharp.Native target ISA: ${SN_RESOLVED_ARCH_NAME} (${SN_RESOLVED_ARCH_DEFINE})")
|
||||||
message(STATUS "StgSharp.Native compiler front-end: ${STGSHARP_C_FRONTEND_VARIANT}")
|
|
||||||
message(STATUS "StgSharp.Native output dir: ${STGSHARP_BUILD_OUTPUT_DIR}")
|
message(STATUS "StgSharp.Native output dir: ${STGSHARP_BUILD_OUTPUT_DIR}")
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#include "gl.h"
|
#include "gl.h"
|
||||||
// #include "wgl.h"
|
// #include "wgl.h"
|
||||||
#define GLFWAPI INTERNAL
|
// #define GLFWAPI INTERNAL
|
||||||
#include "glfw\glfw3.h"
|
#include "glfw\glfw3.h"
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
#include "sn_intrinsic.std.h"
|
#include "sn_intrinsic.std.h"
|
||||||
|
|
||||||
#ifndef SN_X86_TARGET_ATTR_sse
|
#ifndef SN_X86_TARGET_ATTR_sse
|
||||||
#define SN_X86_TARGET_ATTR_sse SN_CLANG_TARGET_ATTR("sse42")
|
#define SN_STD_TARGET_ATTR_IMPL(T_arch, T_feature) SN_X86_TARGET_ATTR_##T_arch##T_feature
|
||||||
|
#define SN_X86_TARGET_ATTR_sse SN_CLANG_TARGET_ATTR("sse4.2")
|
||||||
#define SN_X86_TARGET_ATTR_avx SN_CLANG_TARGET_ATTR("avx")
|
#define SN_X86_TARGET_ATTR_avx SN_CLANG_TARGET_ATTR("avx")
|
||||||
#define SN_X86_TARGET_ATTR_avx_fma SN_CLANG_TARGET_ATTR("avx,avx2,fma")
|
#define SN_X86_TARGET_ATTR_avx_fma SN_CLANG_TARGET_ATTR("avx,avx2,fma")
|
||||||
#define SN_X86_TARGET_ATTR_512 SN_CLANG_TARGET_ATTR("avx512f,avx512vl")
|
#define SN_X86_TARGET_ATTR_512 SN_CLANG_TARGET_ATTR("avx512f,avx512vl")
|
||||||
|
|||||||
@@ -138,17 +138,6 @@ extern __declspec(align(64)) sn_zero_kernel_u64 SN_ZERO_KERNEL;
|
|||||||
int col_length, int row_length, \
|
int col_length, int row_length, \
|
||||||
int col_index, int row_index)
|
int col_index, int row_index)
|
||||||
|
|
||||||
/* Declarations for AVX float variant
|
|
||||||
DECLARE_BUILD_PANEL(avx, float);
|
|
||||||
DECLARE_BUILD_PANEL(512, float);
|
|
||||||
|
|
||||||
DECLARE_STORE_PANEL(avx, float);
|
|
||||||
DECLARE_STORE_PANEL(512, float);
|
|
||||||
DECLARE_STORE_PANEL(512, float);
|
|
||||||
|
|
||||||
DECLARE_BUILD_PANEL(512, double);
|
|
||||||
|
|
||||||
DECLARE_STORE_PANEL(512, double);
|
|
||||||
/**/
|
|
||||||
|
|
||||||
#endif /* SN_MATKERNEL */
|
#endif /* SN_MATKERNEL */
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
#ifndef SN_INTRINSIC_CallCONV_STD
|
#ifndef SN_INTRINSIC_CALLCONV_STD
|
||||||
#define SN_INTRINSIC_CallCONV_STD
|
#define SN_INTRINSIC_CALLCONV_STD
|
||||||
|
|
||||||
#include "sn_internal.h"
|
#include "sn_internal.h"
|
||||||
#include "sn_target.h"
|
|
||||||
#include "sn_intrinsic.h"
|
#include "sn_intrinsic.h"
|
||||||
|
|
||||||
#ifndef static_assert
|
#ifndef static_assert
|
||||||
@@ -10,7 +9,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SN_STD_TARGET_ATTR(T_arch, T_feature) SN_STD_TARGET_ATTR_IMPL(T_arch, T_feature)
|
#define SN_STD_TARGET_ATTR(T_arch, T_feature) SN_STD_TARGET_ATTR_IMPL(T_arch, T_feature)
|
||||||
#define SN_STD_TARGET_ATTR_IMPL(T_arch, T_feature) SN_X86_TARGET_ATTR_##T_arch##T_feature
|
|
||||||
|
|
||||||
#define MK_PROC_NAME_STD(T_type, T_arch, T_feature, T_op) \
|
#define MK_PROC_NAME_STD(T_type, T_arch, T_feature, T_op) \
|
||||||
T_type##_multi_kernel_proc_##T_op##_##T_arch##_##T_feature
|
T_type##_multi_kernel_proc_##T_op##_##T_arch##_##T_feature
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
#if SN_IS_ARCH(SN_ARCH_X86_64)
|
#if SN_IS_ARCH(SN_ARCH_X86_64)
|
||||||
|
|
||||||
#include "sn_internal.h"
|
#include "sn_internal.h"
|
||||||
|
#include "sn_intrinsic.context.x86.h"
|
||||||
#include "sn_intrinsic.h"
|
#include "sn_intrinsic.h"
|
||||||
#include "sn_intrinsic.std.h"
|
#include "sn_intrinsic.std.h"
|
||||||
#include "sn_intrinsic.context.x86.h"
|
|
||||||
#include "sn_intrinsic.matkernel.h"
|
#include "sn_intrinsic.matkernel.h"
|
||||||
#include <emmintrin.h>
|
#include <emmintrin.h>
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user