Merge branch 'develop' into missing-tcc-transition
This commit is contained in:
6
.github/workflows/compiler-tests.yaml
vendored
6
.github/workflows/compiler-tests.yaml
vendored
@@ -16,8 +16,8 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
image: [gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14, clang-version-13,
|
||||
clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies,
|
||||
image: [gcc-version-13, gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14,
|
||||
clang-version-13, clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies,
|
||||
ubuntu-22.04_all-dependencies, ubuntu-22.04_min-dependencies]
|
||||
opts: [.opt, .fast]
|
||||
runs-on: [self-hosted, linux, x64]
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
matrix:
|
||||
gem5-compilation: [ARM, ARM_MESI_Three_Level, ARM_MESI_Three_Level_HTM, ARM_MOESI_hammer, Garnet_standalone, MIPS, 'NULL', NULL_MESI_Two_Level,
|
||||
NULL_MOESI_CMP_directory, NULL_MOESI_CMP_token, NULL_MOESI_hammer, POWER, RISCV, SPARC, X86, X86_MI_example, X86_MOESI_AMD_Base, VEGA_X86]
|
||||
image: [gcc-version-12, clang-version-16]
|
||||
image: [gcc-version-13, clang-version-16]
|
||||
opts: [.opt]
|
||||
runs-on: [self-hosted, linux, x64]
|
||||
timeout-minutes: 2880 # 48 hours
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018 ARM Limited
|
||||
* Copyright (c) 2018,2024 ARM Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
@@ -69,9 +69,27 @@ QueuePolicy::create(const QoSMemCtrlParams &p)
|
||||
}
|
||||
}
|
||||
|
||||
QueuePolicy::PacketQueue::iterator
|
||||
FifoQueuePolicy::selectPacket(PacketQueue* queue)
|
||||
{
|
||||
panic_if(queue->empty(),
|
||||
"Provided packet queue is not usable by queue policy");
|
||||
return queue->begin();
|
||||
}
|
||||
|
||||
QueuePolicy::PacketQueue::iterator
|
||||
LifoQueuePolicy::selectPacket(PacketQueue* queue)
|
||||
{
|
||||
panic_if(queue->empty(),
|
||||
"Provided packet queue is not usable by queue policy");
|
||||
return std::prev(queue->end());
|
||||
}
|
||||
|
||||
QueuePolicy::PacketQueue::iterator
|
||||
LrgQueuePolicy::selectPacket(PacketQueue* q)
|
||||
{
|
||||
panic_if(q->empty(),
|
||||
"Provided packet queue is not usable by queue policy");
|
||||
QueuePolicy::PacketQueue::iterator ret = q->end();
|
||||
|
||||
// Tracks one packet per requestor in the queue
|
||||
@@ -91,10 +109,10 @@ LrgQueuePolicy::selectPacket(PacketQueue* q)
|
||||
"from queue with id %d\n", requestor_id);
|
||||
|
||||
// Check if this is a known requestor.
|
||||
panic_if(memCtrl->hasRequestor(requestor_id),
|
||||
panic_if(!memCtrl->hasRequestor(requestor_id),
|
||||
"%s: Unrecognized Requestor\n", __func__);
|
||||
|
||||
panic_if(toServe.size() > 0,
|
||||
panic_if(toServe.size() <= 0,
|
||||
"%s: toServe list is empty\n", __func__);
|
||||
|
||||
if (toServe.front() == requestor_id) {
|
||||
@@ -137,8 +155,7 @@ LrgQueuePolicy::selectPacket(PacketQueue* q)
|
||||
|
||||
DPRINTF(QOS, "QoSQPolicy::lrg no packet was serviced\n");
|
||||
|
||||
// Ret will be : packet to serve if any found or queue begin
|
||||
// (end if queue is empty)
|
||||
// Ret will be : packet to serve
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018 ARM Limited
|
||||
* Copyright (c) 2018, 2024 ARM Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
@@ -93,7 +93,7 @@ class QueuePolicy
|
||||
* The implementation of this virtual method selects the packet
|
||||
* to be serviced from the packet queue passed as an argument.
|
||||
*
|
||||
* @param queue Packet queue
|
||||
* @param queue Non-empty packet queue to select a packet from
|
||||
* @return Iterator pointing to the packet in the queue to be
|
||||
* serviced
|
||||
*/
|
||||
@@ -127,14 +127,11 @@ class LifoQueuePolicy : public QueuePolicy
|
||||
/**
|
||||
* Implements LIFO packet select policy
|
||||
*
|
||||
* @param queue The queue in which to select a packet
|
||||
* @param queue The non-empty queue from which to select a packet
|
||||
* @return Iterator to the selected packet
|
||||
*/
|
||||
PacketQueue::iterator
|
||||
selectPacket(PacketQueue* queue) override
|
||||
{
|
||||
return queue->end();
|
||||
}
|
||||
selectPacket(PacketQueue* queue) override;
|
||||
};
|
||||
|
||||
/** First In First Out Queue Policy */
|
||||
@@ -148,14 +145,11 @@ class FifoQueuePolicy : public QueuePolicy
|
||||
/**
|
||||
* Implements FCFS packet select policy
|
||||
*
|
||||
* @param queue The queue in which to select a packet
|
||||
* @param queue The non-empty queue from which to select a packet
|
||||
* @return Iterator to the selected packet
|
||||
*/
|
||||
PacketQueue::iterator
|
||||
selectPacket(PacketQueue* queue) override
|
||||
{
|
||||
return queue->begin();
|
||||
}
|
||||
selectPacket(PacketQueue* queue) override;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -176,7 +170,7 @@ class LrgQueuePolicy : public QueuePolicy
|
||||
/**
|
||||
* Implements LRG packet select policy
|
||||
*
|
||||
* @param queue The queue in which to select a packet
|
||||
* @param queue The non-empty queue from which to select a packet
|
||||
* @return Iterator to the selected packet
|
||||
*/
|
||||
PacketQueue::iterator
|
||||
|
||||
@@ -65,6 +65,11 @@ services:
|
||||
args:
|
||||
- version=12
|
||||
image: gcr.io/gem5-test/gcc-version-12:latest
|
||||
gcc-13:
|
||||
build:
|
||||
context: ubuntu-22.04_gcc_13-version
|
||||
dockerfile: Dockerfile
|
||||
image: gcr.io/gem5-test/gcc-version-13:latest
|
||||
clang-7:
|
||||
build:
|
||||
context: ubuntu-20.04_clang-version
|
||||
|
||||
53
util/dockerfiles/ubuntu-22.04_gcc_13-version/Dockerfile
Normal file
53
util/dockerfiles/ubuntu-22.04_gcc_13-version/Dockerfile
Normal file
@@ -0,0 +1,53 @@
|
||||
# Copyright (c) 2024 The Regents of the University of California
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met: redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer;
|
||||
# redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution;
|
||||
# neither the name of the copyright holders nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
FROM --platform=${BUILDPLATFORM} ubuntu:22.04
|
||||
|
||||
# Valid version values:
|
||||
# 13
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt -y update && \
|
||||
# software-properties-common is necessary to install
|
||||
# to add PPA to the system
|
||||
apt -y install software-properties-common && \
|
||||
# Installing PPA is necessary to install gcc-13
|
||||
# because it is not available in the default repositories
|
||||
# for Ubuntu 22.04
|
||||
add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
|
||||
apt -y update && \
|
||||
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
|
||||
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
|
||||
doxygen libboost-all-dev libhdf5-serial-dev python3-pydot libpng-dev \
|
||||
gcc-13 g++-13 make
|
||||
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/g++ g++ /usr/bin/g++- 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/gcc gcc /usr/bin/gcc-13 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/c++ c++ /usr/bin/g++-13 100
|
||||
RUN update-alternatives --install \
|
||||
/usr/bin/cc cc /usr/bin/gcc-13 100
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (c) 2017-2018 Arm Limited
|
||||
# Copyright (c) 2017-2018, 2024 Arm Limited
|
||||
# All rights reserved
|
||||
#
|
||||
# The license below extends only to copyright in the software and shall
|
||||
@@ -88,20 +88,20 @@ class Commit:
|
||||
return self._tags
|
||||
|
||||
@property
|
||||
def change_id(self):
|
||||
"""Get the Change-Id tag from the commit
|
||||
def change_ids(self):
|
||||
"""Get the Change-Id tag(s) from the commit
|
||||
|
||||
Returns: A change ID or None if no change ID has been
|
||||
specified.
|
||||
Returns: A list of change IDs. May be empty if no change IDs
|
||||
have been specified.
|
||||
|
||||
"""
|
||||
|
||||
try:
|
||||
cids = self.tags["Change-Id"]
|
||||
except KeyError:
|
||||
return None
|
||||
return list()
|
||||
|
||||
assert len(cids) == 1
|
||||
return cids[0]
|
||||
return cids[:]
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.rev[0:8]}: {self.log[0]}"
|
||||
@@ -137,32 +137,26 @@ def list_changes(upstream, feature, paths=[]):
|
||||
feature_revs = tuple(list_revs(upstream, feature, paths=paths))
|
||||
upstream_revs = tuple(list_revs(feature, upstream, paths=paths))
|
||||
|
||||
feature_cids = {
|
||||
c.change_id: c for c in feature_revs if c.change_id is not None
|
||||
}
|
||||
upstream_cids = {
|
||||
c.change_id: c for c in upstream_revs if c.change_id is not None
|
||||
}
|
||||
feature_cids = {cid: c for c in feature_revs for cid in c.change_ids}
|
||||
upstream_cids = {cid: c for c in upstream_revs for cid in c.change_ids}
|
||||
|
||||
incoming = [
|
||||
r
|
||||
for r in reversed(upstream_revs)
|
||||
if r.change_id and r.change_id not in feature_cids
|
||||
if any(rcid not in feature_cids for rcid in r.change_ids)
|
||||
]
|
||||
outgoing = [
|
||||
r
|
||||
for r in reversed(feature_revs)
|
||||
if r.change_id and r.change_id not in upstream_cids
|
||||
if any(rcid not in upstream_cids for rcid in r.change_ids)
|
||||
]
|
||||
common = [
|
||||
r for r in reversed(feature_revs) if r.change_id in upstream_cids
|
||||
]
|
||||
upstream_unknown = [
|
||||
r for r in reversed(upstream_revs) if r.change_id is None
|
||||
]
|
||||
feature_unknown = [
|
||||
r for r in reversed(feature_revs) if r.change_id is None
|
||||
r
|
||||
for r in reversed(feature_revs)
|
||||
if any(rcid in upstream_cids for rcid in r.change_ids)
|
||||
]
|
||||
upstream_unknown = [r for r in reversed(upstream_revs) if not r.change_ids]
|
||||
feature_unknown = [r for r in reversed(feature_revs) if not r.change_ids]
|
||||
|
||||
return incoming, outgoing, common, upstream_unknown, feature_unknown
|
||||
|
||||
@@ -252,12 +246,12 @@ def _main():
|
||||
print("Incorrectly rebased changes:")
|
||||
all_upstream_revs = list_revs(args.upstream, paths=args.paths)
|
||||
all_upstream_cids = {
|
||||
c.change_id: c
|
||||
for c in all_upstream_revs
|
||||
if c.change_id is not None
|
||||
cid: c for c in all_upstream_revs for cid in c.change_ids
|
||||
}
|
||||
incorrect_outgoing = [
|
||||
r for r in outgoing if r.change_id in all_upstream_cids
|
||||
r
|
||||
for r in outgoing
|
||||
if any(rcid in all_upstream_cids for rcid in r.change_ids)
|
||||
]
|
||||
for rev in incorrect_outgoing:
|
||||
print(rev)
|
||||
|
||||
Reference in New Issue
Block a user