From: Michiel W. van Tol Date: Thu, 4 Jun 2020 15:05:16 +0000 (+0100) Subject: arch-arm: Add missing isFirstMicroop flags on uop sequences X-Git-Tag: v20.1.0.0~568 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=562498f6c4dceeacadb996681844068854e8887e;p=gem5.git arch-arm: Add missing isFirstMicroop flags on uop sequences Certain micro-op sequences were only setting isLastMicroop flags, and did not set the isFirstMicroop flag. This adds the missing setFirstMicroop() calls. This fixes tracing issues (e.g. Tarmac) of certain micro-opped instruction sequences such as LD1. Change-Id: I7de3ee2759e2b4e1065a7cbac4186f11227d84be Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/30034 Reviewed-by: Andreas Sandberg Maintainer: Andreas Sandberg Tested-by: kokoro --- diff --git a/src/arch/arm/insts/macromem.cc b/src/arch/arm/insts/macromem.cc index 187e6dba6..ad8be64a7 100644 --- a/src/arch/arm/insts/macromem.cc +++ b/src/arch/arm/insts/macromem.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2014 ARM Limited + * Copyright (c) 2010-2014, 2020 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -1196,6 +1196,7 @@ VldMultOp64::VldMultOp64(const char *mnem, ExtMachInst machInst, for (int i = 0; i < numMicroops - 1; ++i) { microOps[i]->setDelayedCommit(); } + microOps[0]->setFirstMicroop(); microOps[numMicroops - 1]->setLastMicroop(); } @@ -1280,6 +1281,7 @@ VstMultOp64::VstMultOp64(const char *mnem, ExtMachInst machInst, for (int i = 0; i < numMicroops - 1; i++) { microOps[i]->setDelayedCommit(); } + microOps[0]->setFirstMicroop(); microOps[numMicroops - 1]->setLastMicroop(); } @@ -1353,6 +1355,7 @@ VldSingleOp64::VldSingleOp64(const char *mnem, ExtMachInst machInst, for (int i = 0; i < numMicroops - 1; i++) { microOps[i]->setDelayedCommit(); } + microOps[0]->setFirstMicroop(); microOps[numMicroops - 1]->setLastMicroop(); } @@ -1425,6 +1428,7 @@ VstSingleOp64::VstSingleOp64(const char *mnem, ExtMachInst machInst, for (int i = 0; i < numMicroops - 1; i++) { microOps[i]->setDelayedCommit(); } + microOps[0]->setFirstMicroop(); microOps[numMicroops - 1]->setLastMicroop(); } @@ -1495,6 +1499,7 @@ MacroVFPMemOp::MacroVFPMemOp(const char *mnem, ExtMachInst machInst, } assert(numMicroops == i); + microOps[0]->setFirstMicroop(); microOps[numMicroops - 1]->setLastMicroop(); for (StaticInstPtr *curUop = microOps;