| # Copyright 2023 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| if(NOT IREE_BUILD_EXPERIMENTAL_CPU_UKERNEL_PLUGINS) | |
| return() | |
| endif() | |
| add_subdirectory(test) | |
| include(iree_experimental_system_plugin.cmake) | |
| include(iree_experimental_standalone_plugin.cmake) | |
| iree_experimental_system_plugin( | |
| NAME | |
| builtin_ukernel_system_plugin | |
| SRCS | |
| plugin.c | |
| DEPS | |
| iree::builtins::ukernel | |
| ) | |
| set(_STANDALONE_PLUGIN_ARCHS "") | |
| set(_STANDALONE_PLUGIN_ARCH_SRCS "") | |
| iree_compiler_targeting_iree_arch(_IREE_UKERNEL_BITCODE_BUILD_X86_64 "x86_64") | |
| if (_IREE_UKERNEL_BITCODE_BUILD_X86_64) | |
| set(IREE_UK_X86_64_AVX2_FMA_COPTS | |
| "-mavx2" | |
| "-mfma" | |
| ) | |
| set(IREE_UK_X86_64_AVX512_BASE_COPTS | |
| ${IREE_UK_X86_64_AVX2_FMA_COPTS} | |
| "-mavx512f" | |
| "-mavx512vl" | |
| "-mavx512cd" | |
| "-mavx512bw" | |
| "-mavx512dq" | |
| ) | |
| set(IREE_UK_X86_64_AVX512_VNNI_COPTS | |
| ${IREE_UK_X86_64_AVX512_BASE_COPTS} | |
| "-mavx512vnni" | |
| ) | |
| list(APPEND _STANDALONE_PLUGIN_ARCHS "x86_64") | |
| list(APPEND _STANDALONE_PLUGIN_ARCH_SRCS | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/query_tile_sizes_x86_64.c" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/unpack_x86_64.c" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/pack_x86_64.c" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/mmt4d_x86_64.c" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/mmt4d_x86_64_avx2_fma.c:IREE_UK_X86_64_AVX2_FMA_COPTS" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/pack_x86_64_avx2_fma.c:IREE_UK_X86_64_AVX2_FMA_COPTS" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/unpack_x86_64_avx2_fma.c:IREE_UK_X86_64_AVX2_FMA_COPTS" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/unpack_x86_64_avx512_base.c:IREE_UK_X86_64_AVX512_BASE_COPTS" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/mmt4d_x86_64_avx512_base.c:IREE_UK_X86_64_AVX512_BASE_COPTS" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/pack_x86_64_avx512_base.c:IREE_UK_X86_64_AVX512_BASE_COPTS" | |
| "x86_64:runtime/src/iree/builtins/ukernel/arch/x86_64/mmt4d_x86_64_avx512_vnni.c:IREE_UK_X86_64_AVX512_VNNI_COPTS" | |
| ) | |
| endif() # _IREE_UKERNEL_BITCODE_BUILD_X86_64 | |
| iree_compiler_targeting_iree_arch(_IREE_UKERNEL_BITCODE_BUILD_ARM_64 "arm_64") | |
| if (_IREE_UKERNEL_BITCODE_BUILD_ARM_64) | |
| set(IREE_UK_ARM_64_DOTPROD_COPTS | |
| "-march=armv8.2-a+dotprod" | |
| ) | |
| set(IREE_UK_ARM_64_I8MM_COPTS | |
| "-march=armv8.2-a+i8mm" | |
| ) | |
| list(APPEND _STANDALONE_PLUGIN_ARCHS "arm_64") | |
| list(APPEND _STANDALONE_PLUGIN_ARCH_SRCS | |
| "arm_64:runtime/src/iree/builtins/ukernel/arch/arm_64/query_tile_sizes_arm_64.c" | |
| "arm_64:runtime/src/iree/builtins/ukernel/arch/arm_64/mmt4d_arm_64.c" | |
| "arm_64:runtime/src/iree/builtins/ukernel/arch/arm_64/pack_arm_64.c" | |
| "arm_64:runtime/src/iree/builtins/ukernel/arch/arm_64/unpack_arm_64.c" | |
| "arm_64:runtime/src/iree/builtins/ukernel/arch/arm_64/mmt4d_arm_64_dotprod.c:IREE_UK_ARM_64_DOTPROD_COPTS" | |
| "arm_64:runtime/src/iree/builtins/ukernel/arch/arm_64/mmt4d_arm_64_i8mm.c:IREE_UK_ARM_64_I8MM_COPTS" | |
| ) | |
| endif() | |
| iree_experimental_standalone_plugin( | |
| NAME | |
| builtin_ukernel_standalone_plugin | |
| ARCHS | |
| "${_STANDALONE_PLUGIN_ARCHS}" | |
| SRCS | |
| plugin.c | |
| # ukernel/arch/ file come before ukernel/ (non-arch) files because they | |
| # contains symbols that should override weak symbols in ukernel/weak.c. | |
| "${_STANDALONE_PLUGIN_ARCH_SRCS}" | |
| runtime/src/iree/builtins/ukernel/mmt4d.c | |
| runtime/src/iree/builtins/ukernel/mmt4d_tile.c | |
| runtime/src/iree/builtins/ukernel/unpack_tile.c | |
| runtime/src/iree/builtins/ukernel/pack.c | |
| runtime/src/iree/builtins/ukernel/query_tile_sizes.c | |
| runtime/src/iree/builtins/ukernel/unpack.c | |
| runtime/src/iree/builtins/ukernel/pack_tile.c | |
| runtime/src/iree/builtins/ukernel/weak.c | |
| ) |