Deleted Added
sdiff udiff text old ( 13454:19a5b4fb1f1f ) new ( 13455:56e25a5f9603 )
full compact
1/*
2 * Copyright (c) 2014 The University of Wisconsin
3 *
4 * Copyright (c) 2006 INRIA (Institut National de Recherche en
5 * Informatique et en Automatique / French National Research Institute
6 * for Computer Science and Applied Mathematics)
7 *
8 * All rights reserved.

--- 53 unchanged lines hidden (view full) ---

62class LTAGE: public TAGE
63{
64 public:
65 LTAGE(const LTAGEParams *params);
66
67 // Base class methods.
68 void squash(ThreadID tid, void *bp_history) override;
69
70 private:
71 // Prediction Structures
72 // Loop Predictor Entry
73 struct LoopEntry
74 {
75 uint16_t numIter;
76 uint16_t currentIter;
77 uint16_t currentIterSpec;
78 uint8_t confidence;
79 uint16_t tag;
80 uint8_t age;
81 bool dir;
82
83 LoopEntry() : numIter(0), currentIter(0), currentIterSpec(0),
84 confidence(0), tag(0), age(0), dir(0) { }
85 };
86
87 // Primary branch history entry
88 struct LTageBranchInfo : public TageBranchInfo
89 {
90 uint16_t loopTag;
91 uint16_t currentIter;
92
93 bool loopPred;
94 bool loopPredValid;

--- 77 unchanged lines hidden (view full) ---

172 * @param bp_history Wrapping pointer to TageBranchInfo (to allow
173 * storing derived class prediction information in the
174 * base class).
175 * @post bp_history points to valid memory.
176 */
177 void squash(
178 ThreadID tid, bool taken, void *bp_history) override;
179
180 const unsigned logSizeLoopPred;
181 const unsigned loopTableAgeBits;
182 const unsigned loopTableConfidenceBits;
183 const unsigned loopTableTagBits;
184 const unsigned loopTableIterBits;
185 const unsigned logLoopTableAssoc;
186 const uint8_t confidenceThreshold;
187 const uint16_t loopTagMask;
188 const uint16_t loopNumIterMask;
189
190 LoopEntry *ltable;
191
192 int8_t loopUseCounter;
193 unsigned withLoopBits;
194};
195
196#endif // __CPU_PRED_LTAGE