|  | # Copyright 2019 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 | 
|  |  | 
|  | load("//build_tools/bazel:build_defs.oss.bzl", "iree_cmake_extra_content", "iree_runtime_cc_binary") | 
|  | load("//build_tools/bazel:iree_bytecode_module.bzl", "iree_bytecode_module") | 
|  | load("//build_tools/bazel:native_binary.bzl", "native_test") | 
|  |  | 
|  | package( | 
|  | default_visibility = ["//visibility:public"], | 
|  | features = ["layering_check"], | 
|  | licenses = ["notice"],  # Apache 2.0 | 
|  | ) | 
|  |  | 
|  | iree_cmake_extra_content( | 
|  | content = """ | 
|  | if(IREE_HAL_DRIVER_LOCAL_SYNC AND IREE_HAL_EXECUTABLE_LOADER_VMVX_MODULE AND | 
|  | (IREE_TARGET_BACKEND_VMVX OR IREE_HOST_BIN_DIR)) | 
|  | """, | 
|  | inline = True, | 
|  | ) | 
|  |  | 
|  | iree_runtime_cc_binary( | 
|  | name = "simple_embedding_vmvx_sync", | 
|  | srcs = [ | 
|  | "device_vmvx_sync.c", | 
|  | "simple_embedding.c", | 
|  | ], | 
|  | deps = [ | 
|  | ":simple_embedding_test_bytecode_module_vmvx_c", | 
|  | "//runtime/src/iree/base", | 
|  | "//runtime/src/iree/hal", | 
|  | "//runtime/src/iree/hal/drivers/local_sync:sync_driver", | 
|  | "//runtime/src/iree/hal/local", | 
|  | "//runtime/src/iree/hal/local/loaders:vmvx_module_loader", | 
|  | "//runtime/src/iree/modules/hal", | 
|  | "//runtime/src/iree/vm", | 
|  | "//runtime/src/iree/vm/bytecode:module", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_bytecode_module( | 
|  | name = "simple_embedding_test_bytecode_module_vmvx", | 
|  | src = "simple_embedding_test.mlir", | 
|  | c_identifier = "iree_samples_simple_embedding_test_module_vmvx", | 
|  | flags = [ | 
|  | "--iree-hal-target-backends=vmvx", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | native_test( | 
|  | name = "simple_embedding_vmvx_sync_test", | 
|  | src = ":simple_embedding_vmvx_sync", | 
|  | ) | 
|  |  | 
|  | iree_cmake_extra_content( | 
|  | content = """ | 
|  | endif() | 
|  | """, | 
|  | inline = True, | 
|  | ) | 
|  |  | 
|  | iree_cmake_extra_content( | 
|  | content = """ | 
|  | iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_ARM_32 "arm_32") | 
|  | iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_ARM_64 "arm_64") | 
|  | iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_RISCV_32 "riscv_32") | 
|  | iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_RISCV_64 "riscv_64") | 
|  | iree_compiler_targeting_iree_arch(_IREE_COMPILER_TARGETING_X86_64 "x86_64") | 
|  | if(IREE_HAL_DRIVER_LOCAL_SYNC AND | 
|  | IREE_HAL_EXECUTABLE_LOADER_EMBEDDED_ELF AND | 
|  | ((IREE_TARGET_BACKEND_LLVM_CPU AND | 
|  | _IREE_COMPILER_TARGETING_ARM_32 AND | 
|  | _IREE_COMPILER_TARGETING_ARM_64 AND | 
|  | _IREE_COMPILER_TARGETING_RISCV_32 AND | 
|  | _IREE_COMPILER_TARGETING_RISCV_64 AND | 
|  | _IREE_COMPILER_TARGETING_X86_64) OR IREE_HOST_BIN_DIR)) | 
|  | """, | 
|  | inline = True, | 
|  | ) | 
|  |  | 
|  | iree_runtime_cc_binary( | 
|  | name = "simple_embedding_embedded_sync", | 
|  | srcs = [ | 
|  | "device_embedded_sync.c", | 
|  | "simple_embedding.c", | 
|  | ], | 
|  | deps = [ | 
|  | ":simple_embedding_test_bytecode_module_cpu_arm_32_c", | 
|  | ":simple_embedding_test_bytecode_module_cpu_arm_64_c", | 
|  | ":simple_embedding_test_bytecode_module_cpu_riscv_32_c", | 
|  | ":simple_embedding_test_bytecode_module_cpu_riscv_64_c", | 
|  | ":simple_embedding_test_bytecode_module_cpu_x86_64_c", | 
|  | "//runtime/src/iree/base", | 
|  | "//runtime/src/iree/hal", | 
|  | "//runtime/src/iree/hal/drivers/local_sync:sync_driver", | 
|  | "//runtime/src/iree/hal/local", | 
|  | "//runtime/src/iree/hal/local/loaders:embedded_elf_loader", | 
|  | "//runtime/src/iree/modules/hal", | 
|  | "//runtime/src/iree/vm", | 
|  | "//runtime/src/iree/vm/bytecode:module", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_bytecode_module( | 
|  | name = "simple_embedding_test_bytecode_module_cpu_x86_64", | 
|  | src = "simple_embedding_test.mlir", | 
|  | c_identifier = "iree_samples_simple_embedding_test_module_cpu_x86_64", | 
|  | flags = [ | 
|  | "--iree-hal-target-backends=llvm-cpu", | 
|  | "--iree-llvmcpu-target-triple=x86_64-pc-linux-elf", | 
|  | "--iree-llvmcpu-target-cpu=generic", | 
|  | "--iree-llvmcpu-debug-symbols=false", | 
|  | "--iree-vm-bytecode-module-strip-source-map=true", | 
|  | "--iree-vm-emit-polyglot-zip=false", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_bytecode_module( | 
|  | name = "simple_embedding_test_bytecode_module_cpu_riscv_32", | 
|  | src = "simple_embedding_test.mlir", | 
|  | c_identifier = "iree_samples_simple_embedding_test_module_cpu_riscv_32", | 
|  | flags = [ | 
|  | "--iree-hal-target-backends=llvm-cpu", | 
|  | "--iree-llvmcpu-target-triple=riscv32-pc-linux-elf", | 
|  | "--iree-llvmcpu-target-cpu-features=+m,+f", | 
|  | "--iree-llvmcpu-target-abi=ilp32", | 
|  | "--iree-llvmcpu-debug-symbols=false", | 
|  | "--iree-vm-bytecode-module-strip-source-map=true", | 
|  | "--iree-vm-emit-polyglot-zip=false", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_bytecode_module( | 
|  | name = "simple_embedding_test_bytecode_module_cpu_riscv_64", | 
|  | src = "simple_embedding_test.mlir", | 
|  | c_identifier = "iree_samples_simple_embedding_test_module_cpu_riscv_64", | 
|  | flags = [ | 
|  | "--iree-hal-target-backends=llvm-cpu", | 
|  | "--iree-llvmcpu-target-triple=riscv64-pc-linux-elf", | 
|  | "--iree-llvmcpu-target-cpu-features=+m,+a,+f,+d,+c", | 
|  | "--iree-llvmcpu-target-abi=lp64d", | 
|  | "--iree-llvmcpu-debug-symbols=false", | 
|  | "--iree-vm-bytecode-module-strip-source-map=true", | 
|  | "--iree-vm-emit-polyglot-zip=false", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_bytecode_module( | 
|  | name = "simple_embedding_test_bytecode_module_cpu_arm_32", | 
|  | src = "simple_embedding_test.mlir", | 
|  | c_identifier = "iree_samples_simple_embedding_test_module_cpu_arm_32", | 
|  | flags = [ | 
|  | "--iree-hal-target-backends=llvm-cpu", | 
|  | "--iree-llvmcpu-target-triple=armv7a-pc-linux-elf", | 
|  | "--iree-llvmcpu-target-cpu=generic", | 
|  | "--iree-llvmcpu-target-float-abi=hard", | 
|  | "--iree-llvmcpu-debug-symbols=false", | 
|  | "--iree-vm-bytecode-module-strip-source-map=true", | 
|  | "--iree-vm-emit-polyglot-zip=false", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_bytecode_module( | 
|  | name = "simple_embedding_test_bytecode_module_cpu_arm_64", | 
|  | src = "simple_embedding_test.mlir", | 
|  | c_identifier = "iree_samples_simple_embedding_test_module_cpu_arm_64", | 
|  | flags = [ | 
|  | "--iree-hal-target-backends=llvm-cpu", | 
|  | "--iree-llvmcpu-target-triple=aarch64-pc-linux-elf", | 
|  | "--iree-llvmcpu-target-cpu=generic", | 
|  | "--iree-llvmcpu-debug-symbols=false", | 
|  | "--iree-vm-bytecode-module-strip-source-map=true", | 
|  | "--iree-vm-emit-polyglot-zip=false", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | native_test( | 
|  | name = "simple_embedding_embedded_sync_test", | 
|  | src = ":simple_embedding_embedded_sync", | 
|  | ) | 
|  |  | 
|  | iree_cmake_extra_content( | 
|  | content = """ | 
|  | if(IREE_HAL_DRIVER_LOCAL_TASK AND IREE_HAL_EXECUTABLE_LOADER_EMBEDDED_ELF) | 
|  | """, | 
|  | inline = True, | 
|  | ) | 
|  |  | 
|  | iree_runtime_cc_binary( | 
|  | name = "simple_embedding_embedded", | 
|  | srcs = [ | 
|  | "device_embedded.c", | 
|  | "simple_embedding.c", | 
|  | ], | 
|  | deps = [ | 
|  | ":simple_embedding_test_bytecode_module_cpu_arm_64_c", | 
|  | ":simple_embedding_test_bytecode_module_cpu_riscv_32_c", | 
|  | ":simple_embedding_test_bytecode_module_cpu_riscv_64_c", | 
|  | ":simple_embedding_test_bytecode_module_cpu_x86_64_c", | 
|  | "//runtime/src/iree/base", | 
|  | "//runtime/src/iree/hal", | 
|  | "//runtime/src/iree/hal/drivers/local_task:task_driver", | 
|  | "//runtime/src/iree/hal/local", | 
|  | "//runtime/src/iree/hal/local/loaders:embedded_elf_loader", | 
|  | "//runtime/src/iree/modules/hal", | 
|  | "//runtime/src/iree/task:api", | 
|  | "//runtime/src/iree/vm", | 
|  | "//runtime/src/iree/vm/bytecode:module", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | native_test( | 
|  | name = "simple_embedding_embedded_test", | 
|  | src = ":simple_embedding_embedded", | 
|  | ) | 
|  |  | 
|  | iree_cmake_extra_content( | 
|  | content = """ | 
|  | endif() | 
|  | """, | 
|  | inline = True, | 
|  | ) | 
|  |  | 
|  | iree_cmake_extra_content( | 
|  | content = """ | 
|  | endif() | 
|  |  | 
|  | if(IREE_HAL_DRIVER_VULKAN AND | 
|  | (IREE_TARGET_BACKEND_VULKAN_SPIRV OR IREE_HOST_BIN_DIR)) | 
|  | """, | 
|  | inline = True, | 
|  | ) | 
|  |  | 
|  | iree_runtime_cc_binary( | 
|  | name = "simple_embedding_vulkan", | 
|  | srcs = [ | 
|  | "device_vulkan.c", | 
|  | "simple_embedding.c", | 
|  | ], | 
|  | deps = [ | 
|  | ":simple_embedding_test_bytecode_module_vulkan_c", | 
|  | "//runtime/src/iree/base", | 
|  | "//runtime/src/iree/hal", | 
|  | "//runtime/src/iree/hal/drivers/vulkan/registration", | 
|  | "//runtime/src/iree/modules/hal", | 
|  | "//runtime/src/iree/vm", | 
|  | "//runtime/src/iree/vm/bytecode:module", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_bytecode_module( | 
|  | name = "simple_embedding_test_bytecode_module_vulkan", | 
|  | src = "simple_embedding_test.mlir", | 
|  | c_identifier = "iree_samples_simple_embedding_test_module_vulkan", | 
|  | flags = [ | 
|  | "--iree-hal-target-backends=vulkan-spirv", | 
|  | "--iree-llvmcpu-debug-symbols=false", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | native_test( | 
|  | name = "simple_embedding_vulkan_test", | 
|  | src = ":simple_embedding_vulkan", | 
|  | tags = [ | 
|  | "driver=vulkan", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | iree_cmake_extra_content( | 
|  | content = """ | 
|  | endif() | 
|  | """, | 
|  | inline = True, | 
|  | ) | 
|  |  | 
|  | # Disabled because CUDA is not universally available and Bazel does not | 
|  | # support configurability in a reasonable or useful way. | 
|  | # iree_cmake_extra_content( | 
|  | #     content = """ | 
|  | # if(IREE_HAL_DRIVER_CUDA AND | 
|  | #    (IREE_TARGET_BACKEND_CUDA OR IREE_HOST_BIN_DIR)) | 
|  | # """, | 
|  | #     inline = True, | 
|  | # ) | 
|  |  | 
|  | # iree_runtime_cc_binary( | 
|  | #     name = "simple_embedding_cuda", | 
|  | #     srcs = [ | 
|  | #         "device_cuda.c", | 
|  | #         "simple_embedding.c", | 
|  | #     ], | 
|  | #     deps = [ | 
|  | #         ":simple_embedding_test_bytecode_module_cuda_c", | 
|  | #         "//runtime/src/iree/base", | 
|  | #         "//runtime/src/iree/hal", | 
|  | #         "//runtime/src/iree/hal/drivers/cuda/registration", | 
|  | #         "//runtime/src/iree/modules/hal", | 
|  | #         "//runtime/src/iree/vm", | 
|  | #         "//runtime/src/iree/vm/bytecode:module", | 
|  | #     ], | 
|  | # ) | 
|  |  | 
|  | # iree_bytecode_module( | 
|  | #     name = "simple_embedding_test_bytecode_module_cuda", | 
|  | #     src = "simple_embedding_test.mlir", | 
|  | #     c_identifier = "iree_samples_simple_embedding_test_module_cuda", | 
|  | #     flags = [ | 
|  | #         "--iree-hal-target-backends=cuda", | 
|  | #         "--iree-llvmcpu-debug-symbols=false", | 
|  | #     ], | 
|  | # ) | 
|  |  | 
|  | # # native_test( | 
|  | # #     name = "simple_embedding_cuda_test", | 
|  | # #     src = ":simple_embedding_cuda", | 
|  | # #     tags = [ | 
|  | # #         "driver=cuda", | 
|  | # #     ], | 
|  | # # ) | 
|  |  | 
|  | # iree_cmake_extra_content( | 
|  | #     content = """ | 
|  | # iree_native_test( | 
|  | #   NAME | 
|  | #     "simple_embedding_cuda_test" | 
|  | #   LABELS | 
|  | #     "driver=cuda" | 
|  | #   SRC | 
|  | #     ::simple_embedding_cuda | 
|  | # ) | 
|  |  | 
|  | # endif() | 
|  | # """, | 
|  | #     inline = True, | 
|  | # ) |