summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRekai Gonzalez Alberquilla <Rekai.GonzalezAlberquilla@arm.com>2015-05-05 16:47:24 +0100
committerRekai Gonzalez Alberquilla <Rekai.GonzalezAlberquilla@arm.com>2015-05-05 16:47:24 +0100
commit21f8242430c7a1935a892aac1c26b970b306b113 (patch)
treeed0a865314e7b0fef98bd3e9199d3e23ee1464df
parent8faeec44a69ee56ca9252cd36a2bb8e22d02bddd (diff)
downloadgem5-21f8242430c7a1935a892aac1c26b970b306b113.tar.xz
cpu: Change literal integer constants to meaningful labels
fu_pool and inst_queue were using -1 for "no such FU" and -2 for "all those FUs are busy at the moment" when requesting for a FU and replying. This patch introduces new constants NoCapableFU and NoFreeFU respectively. In addition, the condition (idx == -2 || idx != -1) is equivalent to (idx != -1), so this patch also simplifies that. --HG-- extra : rebase_source : 4833717b9d1e09d7594d1f34f882e13fc4b86846
-rw-r--r--src/cpu/o3/fu_pool.hh13
-rw-r--r--src/cpu/o3/inst_queue_impl.hh6
2 files changed, 12 insertions, 7 deletions
diff --git a/src/cpu/o3/fu_pool.hh b/src/cpu/o3/fu_pool.hh
index e6bb8cb8e..b6e9c126a 100644
--- a/src/cpu/o3/fu_pool.hh
+++ b/src/cpu/o3/fu_pool.hh
@@ -134,12 +134,17 @@ class FUPool : public SimObject
FUPool(const Params *p);
~FUPool();
+ static constexpr auto NoCapableFU = -2;
+ static constexpr auto NoFreeFU = -1;
/**
- * Gets a FU providing the requested capability. Will mark the unit as busy,
- * but leaves the freeing of the unit up to the IEW stage.
+ * Gets a FU providing the requested capability. Will mark the
+ * unit as busy, but leaves the freeing of the unit up to the IEW
+ * stage.
+ *
* @param capability The capability requested.
- * @return Returns -2 if the FU pool does not have the capability, -1 if
- * there is no free FU, and the FU's index otherwise.
+ * @return Returns NoCapableFU if the FU pool does not have the
+ * capability, NoFreeFU if there is no free FU, and the FU's index
+ * otherwise.
*/
int getUnit(OpClass capability);
diff --git a/src/cpu/o3/inst_queue_impl.hh b/src/cpu/o3/inst_queue_impl.hh
index 516d526b1..7352c622b 100644
--- a/src/cpu/o3/inst_queue_impl.hh
+++ b/src/cpu/o3/inst_queue_impl.hh
@@ -801,21 +801,21 @@ InstructionQueue<Impl>::scheduleReadyInsts()
continue;
}
- int idx = -2;
+ int idx = FUPool::NoCapableFU;
Cycles op_latency = Cycles(1);
ThreadID tid = issuing_inst->threadNumber;
if (op_class != No_OpClass) {
idx = fuPool->getUnit(op_class);
issuing_inst->isFloating() ? fpAluAccesses++ : intAluAccesses++;
- if (idx > -1) {
+ if (idx > FUPool::NoFreeFU) {
op_latency = fuPool->getOpLatency(op_class);
}
}
// If we have an instruction that doesn't require a FU, or a
// valid FU, then schedule for execution.
- if (idx == -2 || idx != -1) {
+ if (idx != FUPool::NoFreeFU) {
if (op_latency == Cycles(1)) {
i2e_info->size++;
instsToExecute.push_back(issuing_inst);