blob: af8724548d8e8ebc933bf8b8fae5f58774a15cde [file] [log] [blame]
Philipp Schraderdada1072020-11-24 11:34:46 -08001load("//tools:platforms.bzl", "platforms")
2load("//tools/build_rules:select.bzl", "cpu_select")
3
Brian Silverman3fec6482020-01-19 17:56:20 -08004def fast_gaussian(sigmas, sizes):
Austin Schuha4f69d62020-02-28 13:58:14 -08005 files = []
6 for _, sigma_name, _ in sigmas:
7 for cols, rows in sizes:
8 files.append("fast_gaussian_%dx%d_%s" % (cols, rows, sigma_name))
9 for _, sigma_name, _ in sigmas:
10 for cols, rows in sizes:
11 files.append("fast_gaussian_subtract_%dx%d_%s" % (cols, rows, sigma_name))
Brian Silverman3fec6482020-01-19 17:56:20 -080012 for cols, rows in sizes:
Austin Schuha4f69d62020-02-28 13:58:14 -080013 files.append("fast_subtract_%dx%d" % (cols, rows))
Brian Silverman3fec6482020-01-19 17:56:20 -080014
Austin Schuha4f69d62020-02-28 13:58:14 -080015 params = struct(
16 sigmas = sigmas,
17 sizes = sizes,
18 )
Brian Silverman3fec6482020-01-19 17:56:20 -080019
Austin Schuha4f69d62020-02-28 13:58:14 -080020 headers = [f + ".h" for f in files] + [
21 "fast_gaussian_all.h",
22 ]
23 objects = [f + ".o" for f in files] + [
24 "fast_gaussian_runtime.o",
25 ]
Austin Schuh669068e2023-01-04 20:50:34 -080026 htmls = [f + ".stmt.html" for f in files]
Brian Silverman3fec6482020-01-19 17:56:20 -080027
Austin Schuha4f69d62020-02-28 13:58:14 -080028 native.genrule(
29 name = "generate_fast_gaussian",
30 tools = [
31 ":fast_gaussian_runner",
32 ],
33 cmd = " ".join([
Philipp Schraderdada1072020-11-24 11:34:46 -080034 "$(location :fast_gaussian_runner)",
Austin Schuha4f69d62020-02-28 13:58:14 -080035 "'" + params.to_json() + "'",
Philipp Schraderdada1072020-11-24 11:34:46 -080036 "$(RULEDIR)",
37 ]) + " " + cpu_select({
38 "amd64": "k8",
39 "roborio": "roborio",
Brian Silverman4c7235a2021-11-17 19:04:37 -080040 "armhf": "armv7",
Philipp Schraderf1bbf342022-02-05 14:30:15 -080041 "arm64": "aarch64",
Philipp Schraderdada1072020-11-24 11:34:46 -080042 "cortex-m": "cortex-m",
Austin Schuh0a96ea32022-01-01 22:29:30 -080043 "cortex-m0plus": "cortex-m0plus",
Philipp Schraderdada1072020-11-24 11:34:46 -080044 }),
Austin Schuha4f69d62020-02-28 13:58:14 -080045 outs = headers + objects + htmls,
Philipp Schraderf1bbf342022-02-05 14:30:15 -080046 # The tool doesn't support everything right now.
Philipp Schraderdada1072020-11-24 11:34:46 -080047 target_compatible_with = platforms.any_of([
Philipp Schraderf1bbf342022-02-05 14:30:15 -080048 "@platforms//cpu:arm64",
Philipp Schraderdada1072020-11-24 11:34:46 -080049 "@platforms//cpu:x86_64",
Philipp Schraderf1bbf342022-02-05 14:30:15 -080050 "//tools:cpu_armhf",
Philipp Schraderdada1072020-11-24 11:34:46 -080051 ]),
Austin Schuha4f69d62020-02-28 13:58:14 -080052 )
Brian Silverman3fec6482020-01-19 17:56:20 -080053
Austin Schuha4f69d62020-02-28 13:58:14 -080054 native.cc_library(
55 name = "fast_gaussian_all",
56 hdrs = ["fast_gaussian_all.h"],
57 srcs = headers + objects,
58 deps = [
59 "//third_party:halide_runtime",
60 ],
Austin Schuha4f69d62020-02-28 13:58:14 -080061 )