1/* 2 * Copyright (c) 2011-2013, 2016-2019 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 --- 93 unchanged lines hidden (view full) --- 102 // Typedefs from the Impl here. 103 typedef typename Impl::CPUPol CPUPolicy; 104 typedef typename Impl::DynInstPtr DynInstPtr; 105 typedef typename Impl::O3CPU O3CPU; 106 107 using VecElem = TheISA::VecElem; 108 using VecRegContainer = TheISA::VecRegContainer; 109 |
110 using VecPredRegContainer = TheISA::VecPredRegContainer; 111 |
112 typedef O3ThreadState<Impl> ImplState; 113 typedef O3ThreadState<Impl> Thread; 114 115 typedef typename std::list<DynInstPtr>::iterator ListIt; 116 117 friend class O3ThreadContext<Impl>; 118 119 public: --- 334 unchanged lines hidden (view full) --- 454 setVecLane(PhysRegIdPtr phys_reg, const LD& val) 455 { 456 vecRegfileWrites++; 457 return regFile.setVecLane(phys_reg, val); 458 } 459 460 const VecElem& readVecElem(PhysRegIdPtr reg_idx) const; 461 |
462 const VecPredRegContainer& readVecPredReg(PhysRegIdPtr reg_idx) const; 463 464 VecPredRegContainer& getWritableVecPredReg(PhysRegIdPtr reg_idx); 465 |
466 TheISA::CCReg readCCReg(PhysRegIdPtr phys_reg); 467 468 void setIntReg(PhysRegIdPtr phys_reg, RegVal val); 469 470 void setFloatRegBits(PhysRegIdPtr phys_reg, RegVal val); 471 472 void setVecReg(PhysRegIdPtr reg_idx, const VecRegContainer& val); 473 474 void setVecElem(PhysRegIdPtr reg_idx, const VecElem& val); 475 |
476 void setVecPredReg(PhysRegIdPtr reg_idx, const VecPredRegContainer& val); 477 |
478 void setCCReg(PhysRegIdPtr phys_reg, TheISA::CCReg val); 479 480 RegVal readArchIntReg(int reg_idx, ThreadID tid); 481 482 RegVal readArchFloatRegBits(int reg_idx, ThreadID tid); 483 484 const VecRegContainer& readArchVecReg(int reg_idx, ThreadID tid) const; 485 /** Read architectural vector register for modification. */ --- 18 unchanged lines hidden (view full) --- 504 PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup( 505 RegId(VecRegClass, reg_idx)); 506 setVecLane(phys_reg, val); 507 } 508 509 const VecElem& readArchVecElem(const RegIndex& reg_idx, 510 const ElemIndex& ldx, ThreadID tid) const; 511 |
512 const VecPredRegContainer& readArchVecPredReg(int reg_idx, 513 ThreadID tid) const; 514 515 VecPredRegContainer& getWritableArchVecPredReg(int reg_idx, ThreadID tid); 516 |
517 TheISA::CCReg readArchCCReg(int reg_idx, ThreadID tid); 518 519 /** Architectural register accessors. Looks up in the commit 520 * rename table to obtain the true physical index of the 521 * architected register first, then accesses that physical 522 * register. 523 */ 524 void setArchIntReg(int reg_idx, RegVal val, ThreadID tid); 525 526 void setArchFloatRegBits(int reg_idx, RegVal val, ThreadID tid); 527 |
528 void setArchVecPredReg(int reg_idx, const VecPredRegContainer& val, 529 ThreadID tid); 530 |
531 void setArchVecReg(int reg_idx, const VecRegContainer& val, ThreadID tid); 532 533 void setArchVecElem(const RegIndex& reg_idx, const ElemIndex& ldx, 534 const VecElem& val, ThreadID tid); 535 536 void setArchCCReg(int reg_idx, TheISA::CCReg val, ThreadID tid); 537 538 /** Sets the commit PC state of a specific thread. */ --- 277 unchanged lines hidden (view full) --- 816 Stats::Scalar intRegfileReads; 817 Stats::Scalar intRegfileWrites; 818 //number of float register file accesses 819 Stats::Scalar fpRegfileReads; 820 Stats::Scalar fpRegfileWrites; 821 //number of vector register file accesses 822 mutable Stats::Scalar vecRegfileReads; 823 Stats::Scalar vecRegfileWrites; |
824 //number of predicate register file accesses 825 mutable Stats::Scalar vecPredRegfileReads; 826 Stats::Scalar vecPredRegfileWrites; |
827 //number of CC register file accesses 828 Stats::Scalar ccRegfileReads; 829 Stats::Scalar ccRegfileWrites; 830 //number of misc 831 Stats::Scalar miscRegfileReads; 832 Stats::Scalar miscRegfileWrites; 833}; 834 835#endif // __CPU_O3_CPU_HH__ |