2c2
< * Copyright (c) 2016-2017 ARM Limited
---
> * Copyright (c) 2016-2018 ARM Limited
80c80
< private:
---
> protected:
85a86,87
> int numPinnedWrites;
>
86a89
>
90c93,94
< : regClass(reg_class), regIdx(reg_idx), elemIdx(-1)
---
> : regClass(reg_class), regIdx(reg_idx), elemIdx(-1),
> numPinnedWrites(0)
97c101,102
< : regClass(reg_class), regIdx(reg_idx), elemIdx(elem_idx)
---
> : regClass(reg_class), regIdx(reg_idx), elemIdx(elem_idx),
> numPinnedWrites(0)
204a210,212
> int getNumPinnedWrites() const { return numPinnedWrites; }
> void setNumPinnedWrites(int num_writes) { numPinnedWrites = num_writes; }
>
223a232,233
> int numPinnedWritesToComplete;
> bool pinned;
226c236,238
< explicit PhysRegId() : RegId(IntRegClass, -1), flatIdx(-1) {}
---
> explicit PhysRegId() : RegId(IntRegClass, -1), flatIdx(-1),
> numPinnedWritesToComplete(0)
> {}
231c243,244
< : RegId(_regClass, _regIdx), flatIdx(_flatIdx)
---
> : RegId(_regClass, _regIdx), flatIdx(_flatIdx),
> numPinnedWritesToComplete(0), pinned(false)
237c250,252
< : RegId(_regClass, _regIdx, elem_idx), flatIdx(flat_idx) { }
---
> : RegId(_regClass, _regIdx, elem_idx), flatIdx(flat_idx),
> numPinnedWritesToComplete(0), pinned(false)
> {}
298c313
< static PhysRegId elemId(const PhysRegId* vid, ElemIndex elem)
---
> static PhysRegId elemId(PhysRegId* vid, ElemIndex elem)
302a318,349
>
> int getNumPinnedWrites() const { return numPinnedWrites; }
>
> void setNumPinnedWrites(int numWrites)
> {
> // An instruction with a pinned destination reg can get
> // squashed. The numPinnedWrites counter may be zero when
> // the squash happens but we need to know if the dest reg
> // was pinned originally in order to reset counters properly
> // for a possible re-rename using the same physical reg (which
> // may be required in case of a mem access order violation).
> pinned = (numWrites != 0);
> numPinnedWrites = numWrites;
> }
>
> void decrNumPinnedWrites() { --numPinnedWrites; }
> void incrNumPinnedWrites() { ++numPinnedWrites; }
>
> bool isPinned() const { return pinned; }
>
> int getNumPinnedWritesToComplete() const
> {
> return numPinnedWritesToComplete;
> }
>
> void setNumPinnedWritesToComplete(int numWrites)
> {
> numPinnedWritesToComplete = numWrites;
> }
>
> void decrNumPinnedWritesToComplete() { --numPinnedWritesToComplete; }
> void incrNumPinnedWritesToComplete() { ++numPinnedWritesToComplete; }
305,308c352
< /** Constant pointer definition.
< * PhysRegIds only need to be created once and then we can just share
< * pointers */
< using PhysRegIdPtr = const PhysRegId*;
---
> using PhysRegIdPtr = PhysRegId*;