@@ -89,6 +89,15 @@ ELSEIF(CMAKE_GENERATOR MATCHES "^Visual Studio " AND CMAKE_GENERATOR_PLATFORM)
89
89
ELSE ()
90
90
MESSAGE (FATAL_ERROR "Unsupported Visual Studio architecture \" ${CMAKE_GENERATOR_PLATFORM} \" " )
91
91
ENDIF ()
92
+ ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
93
+ SET (XNNPACK_TARGET_PROCESSOR "wasm" )
94
+ SET (XNNPACK_ENABLE_RISCV_VECTOR OFF )
95
+ IF (CMAKE_C_FLAGS MATCHES "-msimd128" OR CMAKE_CXX_FLAGS MATCHES "-msimd128" )
96
+ SET (XNNPACK_TARGET_PROCESSOR "wasmsimd" )
97
+ ENDIF ()
98
+ IF (CMAKE_C_FLAGS MATCHES "-mrelaxed-simd" OR CMAKE_CXX_FLAGS MATCHES "-mrelaxed-simd" )
99
+ SET (XNNPACK_TARGET_PROCESSOR "wasmrelaxedsimd" )
100
+ ENDIF ()
92
101
ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "^i[3-7]86$" )
93
102
SET (XNNPACK_TARGET_PROCESSOR "x86" )
94
103
ELSEIF (CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" )
@@ -359,7 +368,7 @@ ENDIF()
359
368
# ---[ Build flags
360
369
IF (NOT CMAKE_SYSTEM_NAME )
361
370
MESSAGE (FATAL_ERROR "CMAKE_SYSTEM_NAME not defined" )
362
- ELSEIF (NOT CMAKE_SYSTEM_NAME MATCHES "^(Android|Darwin|iOS|Linux|Windows|CYGWIN|MSYS|QURT)$" )
371
+ ELSEIF (NOT CMAKE_SYSTEM_NAME MATCHES "^(Android|Darwin|iOS|Linux|Windows|CYGWIN|MSYS|QURT|Emscripten )$" )
363
372
MESSAGE (FATAL_ERROR "Unrecognized CMAKE_SYSTEM_NAME value \" ${CMAKE_SYSTEM_NAME} \" " )
364
373
ENDIF ()
365
374
IF (CMAKE_SYSTEM_NAME MATCHES "Windows" )
@@ -802,6 +811,30 @@ IF(XNNPACK_TARGET_PROCESSOR MATCHES "^riscv")
802
811
LIST (APPEND PROD_MICROKERNEL_SRCS ${PROD_RVVFP16ARITH_MICROKERNEL_SRCS} )
803
812
ENDIF ()
804
813
ENDIF ()
814
+ IF (XNNPACK_TARGET_PROCESSOR MATCHES "wasm" )
815
+ LIST (APPEND PROD_MICROKERNEL_SRCS ${PROD_WASM_MICROKERNEL_SRCS} )
816
+ LIST (APPEND NON_PROD_MICROKERNEL_SRCS ${NON_PROD_WASM_MICROKERNEL_SRCS} )
817
+ IF (XNNPACK_ENABLE_ASSEMBLY)
818
+ LIST (APPEND PROD_MICROKERNEL_SRCS ${PROD_WASM32_ASM_MICROKERNEL_SRCS} )
819
+ LIST (APPEND NON_PROD_MICROKERNEL_SRCS ${NON_WASM32_ASM_MICROKERNEL_SRCS} )
820
+ ENDIF ()
821
+ ENDIF ()
822
+ IF (XNNPACK_TARGET_PROCESSOR STREQUAL "wasmsimd" )
823
+ LIST (APPEND PROD_MICROKERNEL_SRCS ${PROD_WASMSIMD_MICROKERNEL_SRCS} )
824
+ LIST (APPEND NON_PROD_MICROKERNEL_SRCS ${NON_PROD_WASMSIMD_MICROKERNEL_SRCS} )
825
+ IF (XNNPACK_ENABLE_ASSEMBLY)
826
+ LIST (APPEND PROD_MICROKERNEL_SRCS ${PROD_WASMSIMD32_ASM_MICROKERNEL_SRCS} )
827
+ LIST (APPEND NON_PROD_MICROKERNEL_SRCS ${NON_WASMSIMD32_ASM_MICROKERNEL_SRCS} )
828
+ ENDIF ()
829
+ ENDIF ()
830
+ IF (XNNPACK_TARGET_PROCESSOR STREQUAL "wasmrelaxedsimd" )
831
+ LIST (APPEND PROD_MICROKERNEL_SRCS ${PROD_WASMRELAXEDSIMD_MICROKERNEL_SRCS} )
832
+ LIST (APPEND NON_PROD_MICROKERNEL_SRCS ${NON_PROD_WASMRELAXEDSIMD_MICROKERNEL_SRCS} )
833
+ IF (XNNPACK_ENABLE_ASSEMBLY)
834
+ LIST (APPEND PROD_MICROKERNEL_SRCS ${PROD_WASMRELAXEDSIMD32_ASM_MICROKERNEL_SRCS} )
835
+ LIST (APPEND NON_PROD_MICROKERNEL_SRCS ${NON_WASMRELAXEDSIMD32_ASM_MICROKERNEL_SRCS} )
836
+ ENDIF ()
837
+ ENDIF ()
805
838
806
839
SET (ALL_MICROKERNEL_SRCS ${PROD_MICROKERNEL_SRCS} ${NON_PROD_MICROKERNEL_SRCS} )
807
840
@@ -1032,6 +1065,15 @@ IF(XNNPACK_TARGET_PROCESSOR MATCHES "^x86(_64)?$")
1032
1065
ENDIF ()
1033
1066
ENDIF ()
1034
1067
ENDIF ()
1068
+ IF (XNNPACK_TARGET_PROCESSOR STREQUAL "wasm" )
1069
+ SET_PROPERTY (SOURCE ${ALL_WASM_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -fno-fast-math -fno-math-errno " )
1070
+ ENDIF ()
1071
+ IF (XNNPACK_TARGET_PROCESSOR STREQUAL "wasmsimd" )
1072
+ SET_PROPERTY (SOURCE ${ALL_WASMSIMD_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -fno-fast-math -fno-math-errno " )
1073
+ ENDIF ()
1074
+ IF (XNNPACK_TARGET_PROCESSOR STREQUAL "wasmrelaxedsimd" )
1075
+ SET_PROPERTY (SOURCE ${ALL_WASMRELAXEDSIMD_MICROKERNEL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -fno-fast-math -fno-math-errno " )
1076
+ ENDIF ()
1035
1077
1036
1078
# Set `XNN_LOG_LEVEL` transitively for all targets that depend on `logging`.
1037
1079
TARGET_COMPILE_DEFINITIONS (logging PUBLIC "XNN_LOG_LEVEL=$<$<CONFIG:Debug>:5>$<$<NOT:$<CONFIG:Debug>>:0>" )
0 commit comments