1/* |
2 * Copyright (c) 2011-2012, 2016-2018 ARM Limited |
3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * All rights reserved 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating 9 * to a hardware implementation of the functionality of the software 10 * licensed hereunder. You may use the software subject to the license --- 82 unchanged lines hidden (view full) --- 93 */ 94class ThreadContext 95{ 96 protected: 97 typedef TheISA::MachInst MachInst; 98 typedef TheISA::CCReg CCReg; 99 using VecRegContainer = TheISA::VecRegContainer; 100 using VecElem = TheISA::VecElem; |
101 using VecPredRegContainer = TheISA::VecPredRegContainer; 102 |
103 public: 104 105 enum Status 106 { 107 /// Running. Instructions should be executed only when 108 /// the context is in this state. 109 Active, 110 --- 128 unchanged lines hidden (view full) --- 239 virtual void setVecLane(const RegId& reg, 240 const LaneData<LaneSize::FourByte>& val) = 0; 241 virtual void setVecLane(const RegId& reg, 242 const LaneData<LaneSize::EightByte>& val) = 0; 243 /** @} */ 244 245 virtual const VecElem& readVecElem(const RegId& reg) const = 0; 246 |
247 virtual const VecPredRegContainer& readVecPredReg(const RegId& reg) 248 const = 0; 249 virtual VecPredRegContainer& getWritableVecPredReg(const RegId& reg) = 0; 250 |
251 virtual CCReg readCCReg(int reg_idx) = 0; 252 253 virtual void setIntReg(int reg_idx, RegVal val) = 0; 254 255 virtual void setFloatRegBits(int reg_idx, RegVal val) = 0; 256 257 virtual void setVecReg(const RegId& reg, const VecRegContainer& val) = 0; 258 259 virtual void setVecElem(const RegId& reg, const VecElem& val) = 0; 260 |
261 virtual void setVecPredReg(const RegId& reg, 262 const VecPredRegContainer& val) = 0; 263 |
264 virtual void setCCReg(int reg_idx, CCReg val) = 0; 265 266 virtual TheISA::PCState pcState() = 0; 267 268 virtual void pcState(const TheISA::PCState &val) = 0; 269 270 void 271 setNPC(Addr val) --- 73 unchanged lines hidden (view full) --- 345 virtual VecRegContainer& getWritableVecRegFlat(int idx) = 0; 346 virtual void setVecRegFlat(int idx, const VecRegContainer& val) = 0; 347 348 virtual const VecElem& readVecElemFlat(const RegIndex& idx, 349 const ElemIndex& elemIdx) const = 0; 350 virtual void setVecElemFlat(const RegIndex& idx, const ElemIndex& elemIdx, 351 const VecElem& val) = 0; 352 |
353 virtual const VecPredRegContainer& readVecPredRegFlat(int idx) const = 0; 354 virtual VecPredRegContainer& getWritableVecPredRegFlat(int idx) = 0; 355 virtual void setVecPredRegFlat(int idx, 356 const VecPredRegContainer& val) = 0; 357 |
358 virtual CCReg readCCRegFlat(int idx) = 0; 359 virtual void setCCRegFlat(int idx, CCReg val) = 0; 360 /** @} */ 361 362}; 363 364/** 365 * ProxyThreadContext class that provides a way to implement a --- 145 unchanged lines hidden (view full) --- 511 virtual void setVecLane(const RegId& reg, 512 const LaneData<LaneSize::EightByte>& val) 513 { return actualTC->setVecLane(reg, val); } 514 /** @} */ 515 516 const VecElem& readVecElem(const RegId& reg) const 517 { return actualTC->readVecElem(reg); } 518 |
519 const VecPredRegContainer& readVecPredReg(const RegId& reg) const 520 { return actualTC->readVecPredReg(reg); } 521 522 VecPredRegContainer& getWritableVecPredReg(const RegId& reg) 523 { return actualTC->getWritableVecPredReg(reg); } 524 |
525 CCReg readCCReg(int reg_idx) 526 { return actualTC->readCCReg(reg_idx); } 527 528 void setIntReg(int reg_idx, RegVal val) 529 { actualTC->setIntReg(reg_idx, val); } 530 531 void setFloatRegBits(int reg_idx, RegVal val) 532 { actualTC->setFloatRegBits(reg_idx, val); } 533 534 void setVecReg(const RegId& reg, const VecRegContainer& val) 535 { actualTC->setVecReg(reg, val); } 536 |
537 void setVecPredReg(const RegId& reg, const VecPredRegContainer& val) 538 { actualTC->setVecPredReg(reg, val); } 539 |
540 void setVecElem(const RegId& reg, const VecElem& val) 541 { actualTC->setVecElem(reg, val); } 542 543 void setCCReg(int reg_idx, CCReg val) 544 { actualTC->setCCReg(reg_idx, val); } 545 546 TheISA::PCState pcState() { return actualTC->pcState(); } 547 --- 60 unchanged lines hidden (view full) --- 608 const VecElem& readVecElemFlat(const RegIndex& id, 609 const ElemIndex& elemIndex) const 610 { return actualTC->readVecElemFlat(id, elemIndex); } 611 612 void setVecElemFlat(const RegIndex& id, const ElemIndex& elemIndex, 613 const VecElem& val) 614 { actualTC->setVecElemFlat(id, elemIndex, val); } 615 |
616 const VecPredRegContainer& readVecPredRegFlat(int id) const 617 { return actualTC->readVecPredRegFlat(id); } 618 619 VecPredRegContainer& getWritableVecPredRegFlat(int id) 620 { return actualTC->getWritableVecPredRegFlat(id); } 621 622 void setVecPredRegFlat(int idx, const VecPredRegContainer& val) 623 { actualTC->setVecPredRegFlat(idx, val); } 624 |
625 CCReg readCCRegFlat(int idx) 626 { return actualTC->readCCRegFlat(idx); } 627 628 void setCCRegFlat(int idx, CCReg val) 629 { actualTC->setCCRegFlat(idx, val); } 630}; 631 632/** @{ */ --- 28 unchanged lines hidden --- |