diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-02-06 18:41:20 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-02-06 18:41:20 +0000 |
commit | 4f1bc131db81042e8e8d1f829ed18e28d9c56b58 (patch) | |
tree | 74c14e29f2928fade2d9f27a664915ee4897ebc2 /math/Makefile | |
parent | 5cd81881e221d2943ca41b2da7bb87c0ede3386b (diff) | |
download | glibc-4f1bc131db81042e8e8d1f829ed18e28d9c56b58.tar.gz glibc-4f1bc131db81042e8e8d1f829ed18e28d9c56b58.tar.xz glibc-4f1bc131db81042e8e8d1f829ed18e28d9c56b58.zip |
Split auto-libm-test-out by function.
math/auto-libm-test-out is, at over 30 MB, by far the largest file in the glibc source tree. This patch splits it by function, so reducing it to auto-libm-test-out-<func> files that are all under 5 MB in size. This is preliminary to splitting up libm-test.inc as well so that each function's tests can also be processed separately by gen-libm-test.pl. As a preliminary patch it doesn't actually implement that step; rather, all the separate files get concatenated by the Makefile to produce the monolithic auto-libm-test-out file again as an input to gen-libm-test.pl. (The concatentation is identical to the file in the source tree before this patch.) Even this preliminary step, however, is of use independent of splitting up libm-test.inc: some tests for csin and csinh have not been moved to auto-libm-test-in because they result in auto-libm-test-out generation taking several minutes rather than a few seconds (all released MPC versions are very slow for certain sin / sinh inputs; there are some old improvements in MPC mainline which should eventually become MPC 1.1, but the complex inverse trig and hyperbolic functions are slow even in MPC mainline and have yet to be moved to auto-libm-test-in at all), and it seems much more reasonable to add such inputs to auto-libm-test-in when it will only slow down regeneration for particular functions than when it will slow down regeneration globally. gen-auto-libm-tests still parses the whole input file, but only generates output for the requested function. This ensures bad syntax in the file is always detected, and parsing the whole file is quick; it's output generation that is comparatively slow for some functions. Tested for x86_64. * math/gen-auto-libm-tests.c: Update comment about use of program. (generate_output): Add argument FUNCTION. (main): Require extra argument. Pass function name to generate_output. * math/Makefile (generated): Add auto-libm-test-out. (libm-test-funcs-auto): New variable. (auto-libm-test-out-files): New variable. ($(objpfx)libm-test.c): Depend on $(auto-libm-test-out-files). Concatenate those files to form $(objpfx)auto-libm-test-out and use it as input to gen-libm-test.pl. * math/README.libm-test: Update. * math/auto-libm-test-out: Remove. * math/auto-libm-test-out-acos: New generated file. * math/auto-libm-test-out-acosh: Likewise. * math/auto-libm-test-out-asin: Likewise. * math/auto-libm-test-out-asinh: Likewise. * math/auto-libm-test-out-atan: Likewise. * math/auto-libm-test-out-atan2: Likewise. * math/auto-libm-test-out-atanh: Likewise. * math/auto-libm-test-out-cabs: Likewise. * math/auto-libm-test-out-carg: Likewise. * math/auto-libm-test-out-cbrt: Likewise. * math/auto-libm-test-out-ccos: Likewise. * math/auto-libm-test-out-ccosh: Likewise. * math/auto-libm-test-out-cexp: Likewise. * math/auto-libm-test-out-clog: Likewise. * math/auto-libm-test-out-clog10: Likewise. * math/auto-libm-test-out-cos: Likewise. * math/auto-libm-test-out-cosh: Likewise. * math/auto-libm-test-out-cpow: Likewise. * math/auto-libm-test-out-csin: Likewise. * math/auto-libm-test-out-csinh: Likewise. * math/auto-libm-test-out-csqrt: Likewise. * math/auto-libm-test-out-ctan: Likewise. * math/auto-libm-test-out-ctanh: Likewise. * math/auto-libm-test-out-erf: Likewise. * math/auto-libm-test-out-erfc: Likewise. * math/auto-libm-test-out-exp: Likewise. * math/auto-libm-test-out-exp10: Likewise. * math/auto-libm-test-out-exp2: Likewise. * math/auto-libm-test-out-expm1: Likewise. * math/auto-libm-test-out-fma: Likewise. * math/auto-libm-test-out-hypot: Likewise. * math/auto-libm-test-out-j0: Likewise. * math/auto-libm-test-out-j1: Likewise. * math/auto-libm-test-out-jn: Likewise. * math/auto-libm-test-out-lgamma: Likewise. * math/auto-libm-test-out-log: Likewise. * math/auto-libm-test-out-log10: Likewise. * math/auto-libm-test-out-log1p: Likewise. * math/auto-libm-test-out-log2: Likewise. * math/auto-libm-test-out-pow: Likewise. * math/auto-libm-test-out-sin: Likewise. * math/auto-libm-test-out-sincos: Likewise. * math/auto-libm-test-out-sinh: Likewise. * math/auto-libm-test-out-sqrt: Likewise. * math/auto-libm-test-out-tan: Likewise. * math/auto-libm-test-out-tanh: Likewise. * math/auto-libm-test-out-tgamma: Likewise. * math/auto-libm-test-out-y0: Likewise. * math/auto-libm-test-out-y1: Likewise. * math/auto-libm-test-out-yn: Likewise.
Diffstat (limited to 'math/Makefile')
-rw-r--r-- | math/Makefile | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/math/Makefile b/math/Makefile index b7ac89762f..d65e59720f 100644 --- a/math/Makefile +++ b/math/Makefile @@ -208,7 +208,7 @@ libm-vec-test-wrappers = $(addsuffix -wrappers, $(libm-vec-tests)) test-extras += $(libm-vec-test-wrappers) extra-test-objs += $(addsuffix .o, $(libm-vec-test-wrappers)) libm-tests-generated = libm-test-ulps.h libm-have-vector-test.h libm-test.c -generated += $(libm-tests-generated) +generated += $(libm-tests-generated) auto-libm-test-out ulps-file = $(firstword $(wildcard $(sysdirs:%=%/libm-test-ulps))) @@ -216,9 +216,18 @@ $(objpfx)libm-test-ulps.h: $(ulps-file) gen-libm-test.pl $(make-target-directory) $(PERL) gen-libm-test.pl -u $< -H $@ -$(objpfx)libm-test.c: libm-test.inc gen-libm-test.pl auto-libm-test-out +libm-test-funcs-auto = acos acosh asin asinh atan atan2 atanh cabs carg cbrt \ + ccos ccosh cexp clog clog10 cos cosh cpow csin csinh \ + csqrt ctan ctanh erf erfc exp exp10 exp2 expm1 fma \ + hypot j0 j1 jn lgamma log log10 log1p log2 pow sin \ + sincos sinh sqrt tan tanh tgamma y0 y1 yn +auto-libm-test-out-files = $(addprefix auto-libm-test-out-,\ + $(libm-test-funcs-auto)) + +$(objpfx)libm-test.c: libm-test.inc gen-libm-test.pl $(auto-libm-test-out-files) $(make-target-directory) - $(PERL) gen-libm-test.pl -c $< -a auto-libm-test-out -C $@ + cat $(auto-libm-test-out-files) > $(objpfx)auto-libm-test-out + $(PERL) gen-libm-test.pl -c $< -a $(objpfx)auto-libm-test-out -C $@ $(objpfx)libm-have-vector-test.h: libm-test.inc gen-libm-have-vector-test.sh $(make-target-directory) |