test.py revision 13680
113680Syazakram@ucdavis.edu# Copyright (c) 2018 The Regents of the University of California
213680Syazakram@ucdavis.edu# All Rights Reserved.
313680Syazakram@ucdavis.edu#
413680Syazakram@ucdavis.edu# Redistribution and use in source and binary forms, with or without
513680Syazakram@ucdavis.edu# modification, are permitted provided that the following conditions are
613680Syazakram@ucdavis.edu# met: redistributions of source code must retain the above copyright
713680Syazakram@ucdavis.edu# notice, this list of conditions and the following disclaimer;
813680Syazakram@ucdavis.edu# redistributions in binary form must reproduce the above copyright
913680Syazakram@ucdavis.edu# notice, this list of conditions and the following disclaimer in the
1013680Syazakram@ucdavis.edu# documentation and/or other materials provided with the distribution;
1113680Syazakram@ucdavis.edu# neither the name of the copyright holders nor the names of its
1213680Syazakram@ucdavis.edu# contributors may be used to endorse or promote products derived from
1313680Syazakram@ucdavis.edu# this software without specific prior written permission.
1413680Syazakram@ucdavis.edu#
1513680Syazakram@ucdavis.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1613680Syazakram@ucdavis.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1713680Syazakram@ucdavis.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1813680Syazakram@ucdavis.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1913680Syazakram@ucdavis.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2013680Syazakram@ucdavis.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2113680Syazakram@ucdavis.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2213680Syazakram@ucdavis.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2313680Syazakram@ucdavis.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2413680Syazakram@ucdavis.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2513680Syazakram@ucdavis.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2613680Syazakram@ucdavis.edu#
2713680Syazakram@ucdavis.edu# Authors: Jason Lowe-Power
2813680Syazakram@ucdavis.edu
2913680Syazakram@ucdavis.edu'''
3013680Syazakram@ucdavis.eduTest file containing simple workloads to run on CPU models.
3113680Syazakram@ucdavis.eduEach test takes ~10 seconds to run.
3213680Syazakram@ucdavis.edu'''
3313680Syazakram@ucdavis.edu
3413680Syazakram@ucdavis.edufrom testlib import *
3513680Syazakram@ucdavis.edu
3613680Syazakram@ucdavis.eduworkloads = ('Bubblesort','FloatMM')
3713680Syazakram@ucdavis.edu
3813680Syazakram@ucdavis.eduvalid_isas = {
3913680Syazakram@ucdavis.edu    'x86': ('AtomicSimpleCPU', 'TimingSimpleCPU', 'DerivO3CPU'),
4013680Syazakram@ucdavis.edu    'arm': ('AtomicSimpleCPU', 'TimingSimpleCPU', 'MinorCPU', 'DerivO3CPU'),
4113680Syazakram@ucdavis.edu}
4213680Syazakram@ucdavis.edu
4313680Syazakram@ucdavis.edu
4413680Syazakram@ucdavis.edufor isa in valid_isas:
4513680Syazakram@ucdavis.edu    bm_dir = joinpath('gem5/cpu_tests/benchmarks/bin/', isa)
4613680Syazakram@ucdavis.edu    for workload in workloads:
4713680Syazakram@ucdavis.edu        ref_path = joinpath(getcwd(), 'ref', workload)
4813680Syazakram@ucdavis.edu        verifiers = (
4913680Syazakram@ucdavis.edu                verifier.MatchStdout(ref_path),
5013680Syazakram@ucdavis.edu        )
5113680Syazakram@ucdavis.edu
5213680Syazakram@ucdavis.edu        workload_binary = DownloadedProgram(bm_dir, workload)
5313680Syazakram@ucdavis.edu        workload_path = workload_binary.path
5413680Syazakram@ucdavis.edu
5513680Syazakram@ucdavis.edu        for cpu in valid_isas[isa]:
5613680Syazakram@ucdavis.edu           gem5_verify_config(
5713680Syazakram@ucdavis.edu                  name='cpu_test_{}_{}'.format(cpu,workload),
5813680Syazakram@ucdavis.edu                  verifiers=verifiers,
5913680Syazakram@ucdavis.edu                  config=joinpath(getcwd(), 'run.py'),
6013680Syazakram@ucdavis.edu                  config_args=['--cpu={}'.format(cpu), workload_path],
6113680Syazakram@ucdavis.edu                  valid_isas=(isa.upper(),),
6213680Syazakram@ucdavis.edu                  fixtures=[workload_binary]
6313680Syazakram@ucdavis.edu           )
64