blob: f0896ccb15485ef867a662ba4549a9823f5f6f81 [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",
Philipp Schraderf1bbf342022-02-05 14:30:15 -080040 "arm64": "aarch64",
Philipp Schraderdada1072020-11-24 11:34:46 -080041 "cortex-m": "cortex-m",
Austin Schuh0a96ea32022-01-01 22:29:30 -080042 "cortex-m0plus": "cortex-m0plus",
James Kuszmaul5a728562023-12-28 21:45:01 -080043 "cortex-m4f-imu": "cortex-m4f-imu",
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 Schraderdada1072020-11-24 11:34:46 -080050 ]),
Austin Schuha4f69d62020-02-28 13:58:14 -080051 )
Brian Silverman3fec6482020-01-19 17:56:20 -080052
Austin Schuha4f69d62020-02-28 13:58:14 -080053 native.cc_library(
54 name = "fast_gaussian_all",
55 hdrs = ["fast_gaussian_all.h"],
56 srcs = headers + objects,
57 deps = [
58 "//third_party:halide_runtime",
59 ],
Austin Schuha4f69d62020-02-28 13:58:14 -080060 )