| 
8 | 8 | 
 
  | 
9 | 9 | # REQUIRES: enable-spec-benchmarks  | 
10 | 10 | 
 
  | 
11 |  | -# RUN: mkdir -p %T  | 
12 |  | -# RUN: echo "%{cxx}" > %T/cxx.subs  | 
13 |  | -# RUN: echo "%{compile_flags}" > %T/compile_flags.subs  | 
14 |  | -# RUN: echo "%{flags}" > %T/flags.subs  | 
15 |  | -# RUN: echo "%{link_flags}" > %T/link_flags.subs  | 
16 |  | -# RUN: echo "%{spec_dir}" > %T/spec_dir.subs  | 
17 |  | -# RUN: %{python} %s %T  | 
 | 11 | +# RUN: mkdir -p %{temp}  | 
 | 12 | +# RUN: echo "%{cxx}" > %{temp}/cxx.subs  | 
 | 13 | +# RUN: echo "%{compile_flags}" > %{temp}/compile_flags.subs  | 
 | 14 | +# RUN: echo "%{flags}" > %{temp}/flags.subs  | 
 | 15 | +# RUN: echo "%{link_flags}" > %{temp}/link_flags.subs  | 
 | 16 | +# RUN: echo "%{spec_dir}" > %{temp}/spec_dir.subs  | 
 | 17 | +# RUN: %{python} %s %{temp}  | 
18 | 18 | # END.  | 
19 | 19 | 
 
  | 
20 | 20 | import json  | 
 | 
66 | 66 | 
 
  | 
67 | 67 | for benchmark in spec_benchmarks:  | 
68 | 68 |     print(f'#--- {benchmark}.sh.test')  | 
69 |  | -    print(f'RUN: rm -rf %T') # clean up any previous (potentially incomplete) run  | 
70 |  | -    print(f'RUN: mkdir %T')  | 
71 |  | -    print(f'RUN: cp {spec_config} %T/spec-config.cfg')  | 
72 |  | -    print(f'RUN: %{{spec_dir}}/bin/runcpu --config %T/spec-config.cfg --size train --output-root %T --rebuild {benchmark}')  | 
73 |  | -    print(f'RUN: rm -rf %T/benchspec') # remove the temporary directory, which can become quite large  | 
 | 69 | +    print(f'RUN: rm -rf %{temp}') # clean up any previous (potentially incomplete) run  | 
 | 70 | +    print(f'RUN: mkdir %{temp}')  | 
 | 71 | +    print(f'RUN: cp {spec_config} %{temp}/spec-config.cfg')  | 
 | 72 | +    print(f'RUN: %{{spec_dir}}/bin/runcpu --config %{temp}/spec-config.cfg --size train --output-root %{temp} --rebuild {benchmark}')  | 
 | 73 | +    print(f'RUN: rm -rf %{temp}/benchspec') # remove the temporary directory, which can become quite large  | 
74 | 74 | 
 
  | 
75 | 75 |     # The `runcpu` command above doesn't fail even if the benchmark fails to run. To determine failure, parse the CSV  | 
76 | 76 |     # results and ensure there are no compilation errors or runtime errors in the status row. Also print the logs and  | 
77 | 77 |     # fail if there are no CSV files at all, which implies a SPEC error.  | 
78 |  | -    print(f'RUN: %{{libcxx-dir}}/utils/parse-spec-results --extract "Base Status" --keep-failed %T/result/*.train.csv > %T/status || ! cat %T/result/*.log')  | 
79 |  | -    print(f'RUN: ! grep -E "CE|RE" %T/status || ! cat %T/result/*.log')  | 
 | 78 | +    print(f'RUN: %{{libcxx-dir}}/utils/parse-spec-results --extract "Base Status" --keep-failed %{temp}/result/*.train.csv > %{temp}/status || ! cat %{temp}/result/*.log')  | 
 | 79 | +    print(f'RUN: ! grep -E "CE|RE" %{temp}/status || ! cat %{temp}/result/*.log')  | 
80 | 80 | 
 
  | 
81 | 81 |     # If there were no errors, parse the results into LNT-compatible format and print them.  | 
82 |  | -    print(f'RUN: %{{libcxx-dir}}/utils/parse-spec-results %T/result/*.train.csv --output-format=lnt > %T/results.lnt')  | 
83 |  | -    print(f'RUN: cat %T/results.lnt')  | 
 | 82 | +    print(f'RUN: %{{libcxx-dir}}/utils/parse-spec-results %{temp}/result/*.train.csv --output-format=lnt > %{temp}/results.lnt')  | 
 | 83 | +    print(f'RUN: cat %{temp}/results.lnt')  | 
0 commit comments