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'),
4113850Shoanguyen@ucdavis.edu    'riscv': ('AtomicSimpleCPU', 'TimingSimpleCPU', 'MinorCPU', 'DerivO3CPU'),
4213680Syazakram@ucdavis.edu}
4313680Syazakram@ucdavis.edu
4413680Syazakram@ucdavis.edu
4514142Snikos.nikoleris@arm.combase_path = joinpath(absdirpath(__file__), 'benchmarks', 'bin')
4614142Snikos.nikoleris@arm.combase_url = 'http://gem5.org/dist/current/gem5/cpu_tests/benchmarks/bin/'
4713680Syazakram@ucdavis.edufor isa in valid_isas:
4814142Snikos.nikoleris@arm.com    path = joinpath(base_path, isa)
4913680Syazakram@ucdavis.edu    for workload in workloads:
5013680Syazakram@ucdavis.edu        ref_path = joinpath(getcwd(), 'ref', workload)
5113680Syazakram@ucdavis.edu        verifiers = (
5213680Syazakram@ucdavis.edu                verifier.MatchStdout(ref_path),
5313680Syazakram@ucdavis.edu        )
5413680Syazakram@ucdavis.edu
5514142Snikos.nikoleris@arm.com        url = base_url + isa + '/' + workload
5614142Snikos.nikoleris@arm.com        workload_binary = DownloadedProgram(url, path, workload)
5714142Snikos.nikoleris@arm.com        binary = joinpath(workload_binary.path, workload)
5813680Syazakram@ucdavis.edu
5913680Syazakram@ucdavis.edu        for cpu in valid_isas[isa]:
6013680Syazakram@ucdavis.edu           gem5_verify_config(
6113680Syazakram@ucdavis.edu                  name='cpu_test_{}_{}'.format(cpu,workload),
6213680Syazakram@ucdavis.edu                  verifiers=verifiers,
6313680Syazakram@ucdavis.edu                  config=joinpath(getcwd(), 'run.py'),
6414142Snikos.nikoleris@arm.com                  config_args=['--cpu={}'.format(cpu), binary],
6513680Syazakram@ucdavis.edu                  valid_isas=(isa.upper(),),
6613680Syazakram@ucdavis.edu                  fixtures=[workload_binary]
6713680Syazakram@ucdavis.edu           )
68