diff options
Diffstat (limited to 'src/cpu/thread_context.hh')
-rw-r--r-- | src/cpu/thread_context.hh | 34 |
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); } |