load("//tensorflow/lite:special_rules.bzl", "tflite_portable_test_suite_combined") load("//tensorflow:tensorflow.bzl", "get_compatible_with_portable") package( default_visibility = ["//visibility:public"], licenses = ["notice"], # Apache 2.0 ) EMSCRIPTEN_LINKOPTS = [ "-s ASSERTIONS=2", "-s ERROR_ON_UNDEFINED_SYMBOLS=1", "-s DEMANGLE_SUPPORT=1", "-s EXIT_RUNTIME=1", "-s ALLOW_MEMORY_GROWTH=1", "-s TOTAL_MEMORY=134217728", ] exports_files([ "xnnpack_delegate.h", ]) cc_library( name = "xnnpack_delegate", srcs = ["xnnpack_delegate.cc"], hdrs = ["xnnpack_delegate.h"], linkstatic = True, deps = [ "//tensorflow/lite:kernel_api", "//tensorflow/lite:minimal_logging", "//tensorflow/lite:util", "//tensorflow/lite/c:common", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/tools/optimize/sparsity:format_converter", "@FP16", "@XNNPACK//:xnnpack_f32", ], ) cc_library( name = "xnnpack_delegate_hdrs_only", hdrs = ["xnnpack_delegate.h"], compatible_with = get_compatible_with_portable(), visibility = ["//tensorflow/lite:__subpackages__"], deps = [ "//tensorflow/lite/c:common", ], ) cc_library( name = "xnnpack_delegate_test_mode", srcs = ["xnnpack_delegate.cc"], hdrs = ["xnnpack_delegate.h"], copts = ["-DXNNPACK_DELEGATE_TEST_MODE=1"], linkstatic = True, deps = [ "//tensorflow/lite:kernel_api", "//tensorflow/lite:minimal_logging", "//tensorflow/lite:util", "//tensorflow/lite/c:common", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/tools/optimize/sparsity:format_converter", "@FP16", "@XNNPACK", ], ) ################################ Tester classes ################################ cc_library( name = "binary_elementwise_tester", testonly = 1, srcs = ["binary_elementwise_tester.cc"], hdrs = ["binary_elementwise_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@FP16", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "conv_2d_tester", testonly = 1, srcs = ["conv_2d_tester.cc"], hdrs = ["conv_2d_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@FP16", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "depth_to_space_tester", testonly = 1, srcs = ["depth_to_space_tester.cc"], hdrs = ["depth_to_space_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "depthwise_conv_2d_tester", testonly = 1, srcs = ["depthwise_conv_2d_tester.cc"], hdrs = ["depthwise_conv_2d_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@FP16", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "fully_connected_tester", testonly = 1, srcs = ["fully_connected_tester.cc"], hdrs = ["fully_connected_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@FP16", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "leaky_relu_tester", testonly = 1, srcs = ["leaky_relu_tester.cc"], hdrs = ["leaky_relu_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "pad_tester", testonly = 1, srcs = ["pad_tester.cc"], hdrs = ["pad_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "pool_2d_tester", testonly = 1, srcs = ["pool_2d_tester.cc"], hdrs = ["pool_2d_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "prelu_tester", testonly = 1, srcs = ["prelu_tester.cc"], hdrs = ["prelu_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@FP16", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "reduce_tester", testonly = 1, srcs = ["reduce_tester.cc"], hdrs = ["reduce_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "reshape_tester", testonly = 1, srcs = ["reshape_tester.cc"], hdrs = ["reshape_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "resize_bilinear_tester", testonly = 1, srcs = ["resize_bilinear_tester.cc"], hdrs = ["resize_bilinear_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "softmax_tester", testonly = 1, srcs = ["softmax_tester.cc"], hdrs = ["softmax_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "unary_elementwise_tester", testonly = 1, srcs = ["unary_elementwise_tester.cc"], hdrs = ["unary_elementwise_tester.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite:schema_fbs_version", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels:builtin_ops", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest", "@flatbuffers", ], ) ############################## Integration tests ############################### cc_library( name = "test_main", testonly = 1, linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ "@com_google_googletest//:gtest_main", ], ) cc_test( name = "abs_test", srcs = ["abs_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "add_test", srcs = ["add_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":binary_elementwise_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "average_pool_2d_test", srcs = ["average_pool_2d_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":pool_2d_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "ceil_test", srcs = ["ceil_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "conv_2d_test", srcs = ["conv_2d_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":conv_2d_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "depth_to_space_test", srcs = ["depth_to_space_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":depth_to_space_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "depthwise_conv_2d_test", srcs = ["depthwise_conv_2d_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":depthwise_conv_2d_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "div_test", srcs = ["div_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":binary_elementwise_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "elu_test", srcs = ["elu_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "fully_connected_test", srcs = ["fully_connected_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":fully_connected_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "floor_test", srcs = ["floor_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "hard_swish_test", srcs = ["hard_swish_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "leaky_relu_test", srcs = ["leaky_relu_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":leaky_relu_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "logistic_test", srcs = ["logistic_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "max_pool_2d_test", srcs = ["max_pool_2d_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":pool_2d_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "maximum_test", srcs = ["maximum_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":binary_elementwise_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "mean_test", srcs = ["mean_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":reduce_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "minimum_test", srcs = ["minimum_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":binary_elementwise_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "mul_test", srcs = ["mul_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":binary_elementwise_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "neg_test", srcs = ["neg_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "pad_test", srcs = ["pad_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":pad_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "prelu_test", srcs = ["prelu_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":prelu_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "relu_test", srcs = ["relu_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "relu6_test", srcs = ["relu6_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "relu_n1_to_1_test", srcs = ["relu_n1_to_1_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "reshape_test", srcs = ["reshape_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":reshape_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "resize_bilinear_test", srcs = ["resize_bilinear_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":resize_bilinear_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "round_test", srcs = ["round_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "softmax_test", srcs = ["softmax_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":softmax_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "sqrt_test", srcs = ["sqrt_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "square_test", srcs = ["square_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":test_main", ":unary_elementwise_tester", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "squared_difference_test", srcs = ["squared_difference_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":binary_elementwise_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) cc_test( name = "sub_test", srcs = ["sub_test.cc"], linkopts = select({ "//tensorflow:emscripten": EMSCRIPTEN_LINKOPTS, "//conditions:default": [], }), deps = [ ":binary_elementwise_tester", ":test_main", ":xnnpack_delegate_test_mode", "@com_google_googletest//:gtest", ], ) tflite_portable_test_suite_combined(combine_conditions = {"deps": [":test_main"]})