summaryrefslogtreecommitdiff
path: root/src/cpu/thread_context.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/thread_context.hh')
-rw-r--r--src/cpu/thread_context.hh34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/cpu/thread_context.hh b/src/cpu/thread_context.hh
index cad073b4f..6dde68650 100644
--- a/src/cpu/thread_context.hh
+++ b/src/cpu/thread_context.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2012, 2016 ARM Limited
+ * Copyright (c) 2011-2012, 2016-2018 ARM Limited
* Copyright (c) 2013 Advanced Micro Devices, Inc.
* All rights reserved
*
@@ -98,6 +98,8 @@ class ThreadContext
typedef TheISA::CCReg CCReg;
using VecRegContainer = TheISA::VecRegContainer;
using VecElem = TheISA::VecElem;
+ using VecPredRegContainer = TheISA::VecPredRegContainer;
+
public:
enum Status
@@ -242,6 +244,10 @@ class ThreadContext
virtual const VecElem& readVecElem(const RegId& reg) const = 0;
+ virtual const VecPredRegContainer& readVecPredReg(const RegId& reg)
+ const = 0;
+ virtual VecPredRegContainer& getWritableVecPredReg(const RegId& reg) = 0;
+
virtual CCReg readCCReg(int reg_idx) = 0;
virtual void setIntReg(int reg_idx, RegVal val) = 0;
@@ -252,6 +258,9 @@ class ThreadContext
virtual void setVecElem(const RegId& reg, const VecElem& val) = 0;
+ virtual void setVecPredReg(const RegId& reg,
+ const VecPredRegContainer& val) = 0;
+
virtual void setCCReg(int reg_idx, CCReg val) = 0;
virtual TheISA::PCState pcState() = 0;
@@ -341,6 +350,11 @@ class ThreadContext
virtual void setVecElemFlat(const RegIndex& idx, const ElemIndex& elemIdx,
const VecElem& val) = 0;
+ virtual const VecPredRegContainer& readVecPredRegFlat(int idx) const = 0;
+ virtual VecPredRegContainer& getWritableVecPredRegFlat(int idx) = 0;
+ virtual void setVecPredRegFlat(int idx,
+ const VecPredRegContainer& val) = 0;
+
virtual CCReg readCCRegFlat(int idx) = 0;
virtual void setCCRegFlat(int idx, CCReg val) = 0;
/** @} */
@@ -502,6 +516,12 @@ class ProxyThreadContext : public ThreadContext
const VecElem& readVecElem(const RegId& reg) const
{ return actualTC->readVecElem(reg); }
+ const VecPredRegContainer& readVecPredReg(const RegId& reg) const
+ { return actualTC->readVecPredReg(reg); }
+
+ VecPredRegContainer& getWritableVecPredReg(const RegId& reg)
+ { return actualTC->getWritableVecPredReg(reg); }
+
CCReg readCCReg(int reg_idx)
{ return actualTC->readCCReg(reg_idx); }
@@ -514,6 +534,9 @@ class ProxyThreadContext : public ThreadContext
void setVecReg(const RegId& reg, const VecRegContainer& val)
{ actualTC->setVecReg(reg, val); }
+ void setVecPredReg(const RegId& reg, const VecPredRegContainer& val)
+ { actualTC->setVecPredReg(reg, val); }
+
void setVecElem(const RegId& reg, const VecElem& val)
{ actualTC->setVecElem(reg, val); }
@@ -590,6 +613,15 @@ class ProxyThreadContext : public ThreadContext
const VecElem& val)
{ actualTC->setVecElemFlat(id, elemIndex, val); }
+ const VecPredRegContainer& readVecPredRegFlat(int id) const
+ { return actualTC->readVecPredRegFlat(id); }
+
+ VecPredRegContainer& getWritableVecPredRegFlat(int id)
+ { return actualTC->getWritableVecPredRegFlat(id); }
+
+ void setVecPredRegFlat(int idx, const VecPredRegContainer& val)
+ { actualTC->setVecPredRegFlat(idx, val); }
+
CCReg readCCRegFlat(int idx)
{ return actualTC->readCCRegFlat(idx); }