blob: 7e54453b19907fae0a0476c34d5e04ba36119c99 [file] [log] [blame]
Marat Dukhan7ae046d2017-02-16 16:57:21 -05001#!/usr/bin/env python
2
3
4import confu
5parser = confu.standard_parser("FP16 configuration script")
Marat Dukhan1718dae2017-02-17 22:41:54 -05006parser.add_argument("--compare", dest="compare", action="store_true",
7 help="Enable performance comparison with other half-precision implementations")
Marat Dukhan7ae046d2017-02-16 16:57:21 -05008
9def main(args):
10 options = parser.parse_args(args)
11 build = confu.Build.from_options(options)
12
13 build.export_cpath("include", ["fp16.h"])
14
Marat Dukhan7f1c3cf2017-02-16 22:42:06 -050015 with build.options(source_dir="test", extra_include_dirs="test", deps=[build.deps.googletest, build.deps.psimd]):
Marat Dukhan7ae046d2017-02-16 16:57:21 -050016 fp16_tables = build.cxx("tables.cc")
Marat Dukhan7ae046d2017-02-16 16:57:21 -050017 build.unittest("ieee-to-fp32-bits",
18 [build.cxx("ieee-to-fp32-bits.cc"), fp16_tables])
19 build.unittest("ieee-to-fp32-value",
20 [build.cxx("ieee-to-fp32-value.cc"), fp16_tables])
Marat Dukhan7f1c3cf2017-02-16 22:42:06 -050021 build.unittest("ieee-from-fp32-value",
22 [build.cxx("ieee-from-fp32-value.cc"), fp16_tables])
Marat Dukhan7ae046d2017-02-16 16:57:21 -050023
Marat Dukhan7ae046d2017-02-16 16:57:21 -050024 build.unittest("alt-to-fp32-bits",
25 [build.cxx("alt-to-fp32-bits.cc"), fp16_tables])
26 build.unittest("alt-to-fp32-value",
27 [build.cxx("alt-to-fp32-value.cc"), fp16_tables])
Marat Dukhan7f5fc4a2017-02-16 17:17:49 -050028 build.unittest("alt-from-fp32-value",
29 [build.cxx("alt-from-fp32-value.cc"), fp16_tables])
30
Marat Dukhanbec1bf12017-02-22 04:23:14 -050031 if build.target.is_x86_64:
32 stubs = build.peachpy("peachpy/stubs.py")
33 build.unittest("alt-xmm-to-fp32-ymm-avx", [build.cxx("peachpy/alt-xmm-to-fp32-xmm-avx.cc"), stubs])
34 build.unittest("alt-xmm-to-fp32-ymm-avx2", [build.cxx("peachpy/alt-xmm-to-fp32-ymm-avx2.cc"), stubs])
35
Marat Dukhan09c7b382017-02-17 15:15:46 -050036 if not build.target.is_emscripten:
37 build.unittest("ieee-to-fp32-psimd", build.cxx("ieee-to-fp32-psimd.cc"))
38 build.unittest("alt-to-fp32-psimd", build.cxx("alt-to-fp32-psimd.cc"))
Marat Dukhan7f1c3cf2017-02-16 22:42:06 -050039
Marat Dukhan09c7b382017-02-17 15:15:46 -050040 build.unittest("ieee-to-fp32x2-psimd", build.cxx("ieee-to-fp32x2-psimd.cc"))
41 build.unittest("alt-to-fp32x2-psimd", build.cxx("alt-to-fp32x2-psimd.cc"))
Marat Dukhana0e32e82017-02-17 02:57:47 -050042
Marat Dukhan7f5fc4a2017-02-16 17:17:49 -050043 build.unittest("bitcasts", build.cxx("bitcasts.cc"))
44
Marat Dukhana8f140a2017-03-23 11:44:07 +000045 macros = ["BENCHMARK_HAS_NO_INLINE_ASSEMBLY"]
46 if options.compare:
47 macros.append("FP16_COMPARATIVE_BENCHMARKS")
48 with build.options(source_dir="bench", extra_include_dirs=".", macros=macros,
Marat Dukhan1718dae2017-02-17 22:41:54 -050049 deps=[build.deps.googlebenchmark, build.deps.psimd]):
50
Marat Dukhane54a2ce2017-02-17 01:24:56 -050051 build.benchmark("ieee-element-bench", build.cxx("ieee-element.cc"))
52 build.benchmark("alt-element-bench", build.cxx("alt-element.cc"))
53
Marat Dukhan1718dae2017-02-17 22:41:54 -050054 build.benchmark("from-ieee-array-bench", build.cxx("from-ieee-array.cc"))
55 build.benchmark("from-alt-array-bench", build.cxx("from-alt-array.cc"))
56
57 build.benchmark("to-ieee-array-bench", build.cxx("to-ieee-array.cc"))
58 build.benchmark("to-alt-array-bench", build.cxx("to-alt-array.cc"))
Marat Dukhan7ae046d2017-02-16 16:57:21 -050059
60 return build
61
62
63if __name__ == "__main__":
64 import sys
65 main(sys.argv[1:]).generate()