Gabe Black has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/41899 )
Change subject: cpu: Eliminate the unused "lane" interface from the
ThreadContext.
......................................................................
cpu: Eliminate the unused "lane" interface from the ThreadContext.
If someone needs to access a component of a vector register, they can do
so through the other interfaces.
Change-Id: Idf1d9b68339eb31b95d4a347548240aa9d2a85cc
---
M src/cpu/checker/thread_context.hh
M src/cpu/o3/cpu.hh
M src/cpu/o3/regfile.hh
M src/cpu/o3/thread_context.hh
M src/cpu/simple_thread.hh
M src/cpu/thread_context.hh
6 files changed, 0 insertions(+), 337 deletions(-)
diff --git a/src/cpu/checker/thread_context.hh
b/src/cpu/checker/thread_context.hh
index 338e871..661c710 100644
--- a/src/cpu/checker/thread_context.hh
+++ b/src/cpu/checker/thread_context.hh
@@ -249,63 +249,6 @@
return actualTC->getWritableVecReg(reg);
}
- /** Vector Register Lane Interfaces. */
- /** @{ */
- /** Reads source vector 8bit operand. */
- ConstVecLane8
- readVec8BitLaneReg(const RegId ®) const override
- {
- return actualTC->readVec8BitLaneReg(reg);
- }
-
- /** Reads source vector 16bit operand. */
- ConstVecLane16
- readVec16BitLaneReg(const RegId ®) const override
- {
- return actualTC->readVec16BitLaneReg(reg);
- }
-
- /** Reads source vector 32bit operand. */
- ConstVecLane32
- readVec32BitLaneReg(const RegId ®) const override
- {
- return actualTC->readVec32BitLaneReg(reg);
- }
-
- /** Reads source vector 64bit operand. */
- ConstVecLane64
- readVec64BitLaneReg(const RegId ®) const override
- {
- return actualTC->readVec64BitLaneReg(reg);
- }
-
- /** Write a lane of the destination vector register. */
- virtual void
- setVecLane(const RegId ®,
- const LaneData<LaneSize::Byte> &val) override
- {
- return actualTC->setVecLane(reg, val);
- }
- virtual void
- setVecLane(const RegId ®,
- const LaneData<LaneSize::TwoByte> &val) override
- {
- return actualTC->setVecLane(reg, val);
- }
- virtual void
- setVecLane(const RegId ®,
- const LaneData<LaneSize::FourByte> &val) override
- {
- return actualTC->setVecLane(reg, val);
- }
- virtual void
- setVecLane(const RegId ®,
- const LaneData<LaneSize::EightByte> &val) override
- {
- return actualTC->setVecLane(reg, val);
- }
- /** @} */
-
const TheISA::VecElem &
readVecElem(const RegId& reg) const override
{
diff --git a/src/cpu/o3/cpu.hh b/src/cpu/o3/cpu.hh
index 596fa19..73b86af 100644
--- a/src/cpu/o3/cpu.hh
+++ b/src/cpu/o3/cpu.hh
@@ -345,37 +345,6 @@
void vecRenameMode(Enums::VecRegRenameMode vec_mode)
{ vecMode = vec_mode; }
- /**
- * Read physical vector register lane
- */
- template<typename VE, int LaneIdx>
- VecLaneT<VE, true>
- readVecLane(PhysRegIdPtr phys_reg) const
- {
- cpuStats.vecRegfileReads++;
- return regFile.readVecLane<VE, LaneIdx>(phys_reg);
- }
-
- /**
- * Read physical vector register lane
- */
- template<typename VE>
- VecLaneT<VE, true>
- readVecLane(PhysRegIdPtr phys_reg) const
- {
- cpuStats.vecRegfileReads++;
- return regFile.readVecLane<VE>(phys_reg);
- }
-
- /** Write a lane of the destination vector register. */
- template<typename LD>
- void
- setVecLane(PhysRegIdPtr phys_reg, const LD& val)
- {
- cpuStats.vecRegfileWrites++;
- return regFile.setVecLane(phys_reg, val);
- }
-
const TheISA::VecElem& readVecElem(PhysRegIdPtr reg_idx) const;
const TheISA::VecPredRegContainer&
@@ -407,27 +376,6 @@
/** Read architectural vector register for modification. */
TheISA::VecRegContainer& getWritableArchVecReg(int reg_idx, ThreadID
tid);
- /** Read architectural vector register lane. */
- template<typename VE>
- VecLaneT<VE, true>
- readArchVecLane(int reg_idx, int lId, ThreadID tid) const
- {
- PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup(
- RegId(VecRegClass, reg_idx));
- return readVecLane<VE>(phys_reg);
- }
-
-
- /** Write a lane of the destination vector register. */
- template<typename LD>
- void
- setArchVecLane(int reg_idx, int lId, ThreadID tid, const LD& val)
- {
- PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup(
- RegId(VecRegClass, reg_idx));
- setVecLane(phys_reg, val);
- }
-
const TheISA::VecElem& readArchVecElem(const RegIndex& reg_idx,
const ElemIndex& ldx, ThreadID tid) const;
diff --git a/src/cpu/o3/regfile.hh b/src/cpu/o3/regfile.hh
index ec8716b..71f2e72 100644
--- a/src/cpu/o3/regfile.hh
+++ b/src/cpu/o3/regfile.hh
@@ -216,36 +216,6 @@
return const_cast<TheISA::VecRegContainer&>(readVecReg(phys_reg));
}
- /** Reads a vector register lane. */
- template <typename VE, int LaneIdx>
- VecLaneT<VE, true>
- readVecLane(PhysRegIdPtr phys_reg) const
- {
- return readVecReg(phys_reg).laneView<VE, LaneIdx>();
- }
-
- /** Reads a vector register lane. */
- template <typename VE>
- VecLaneT<VE, true>
- readVecLane(PhysRegIdPtr phys_reg) const
- {
- return readVecReg(phys_reg).laneView<VE>(phys_reg->elemIndex());
- }
-
- /** Get a vector register lane for modification. */
- template <typename LD>
- void
- setVecLane(PhysRegIdPtr phys_reg, const LD& val)
- {
- assert(phys_reg->isVectorPhysReg());
-
- DPRINTF(IEW, "RegFile: Setting vector register %i[%d] to %lx\n",
- int(phys_reg->index()), phys_reg->elemIndex(), val);
-
- vectorRegFile[phys_reg->index()].laneView<typename
LD::UnderlyingType>(
- phys_reg->elemIndex()) = val;
- }
-
/** Reads a vector element. */
const TheISA::VecElem &
readVecElem(PhysRegIdPtr phys_reg) const
diff --git a/src/cpu/o3/thread_context.hh b/src/cpu/o3/thread_context.hh
index f4d116c..8dd4165 100644
--- a/src/cpu/o3/thread_context.hh
+++ b/src/cpu/o3/thread_context.hh
@@ -219,67 +219,6 @@
return getWritableVecRegFlat(flattenRegId(id).index());
}
- /** Vector Register Lane Interfaces. */
- /** @{ */
- /** Reads source vector 8bit operand. */
- ConstVecLane8
- readVec8BitLaneReg(const RegId& id) const override
- {
- return readVecLaneFlat<uint8_t>(flattenRegId(id).index(),
- id.elemIndex());
- }
-
- /** Reads source vector 16bit operand. */
- ConstVecLane16
- readVec16BitLaneReg(const RegId& id) const override
- {
- return readVecLaneFlat<uint16_t>(flattenRegId(id).index(),
- id.elemIndex());
- }
-
- /** Reads source vector 32bit operand. */
- ConstVecLane32
- readVec32BitLaneReg(const RegId& id) const override
- {
- return readVecLaneFlat<uint32_t>(flattenRegId(id).index(),
- id.elemIndex());
- }
-
- /** Reads source vector 64bit operand. */
- ConstVecLane64
- readVec64BitLaneReg(const RegId& id) const override
- {
- return readVecLaneFlat<uint64_t>(flattenRegId(id).index(),
- id.elemIndex());
- }
-
- /** Write a lane of the destination vector register. */
- void
- setVecLane(const RegId& reg,
- const LaneData<LaneSize::Byte>& val) override
- {
- return setVecLaneFlat(flattenRegId(reg).index(), reg.elemIndex(),
val);
- }
- void
- setVecLane(const RegId& reg,
- const LaneData<LaneSize::TwoByte>& val) override
- {
- return setVecLaneFlat(flattenRegId(reg).index(), reg.elemIndex(),
val);
- }
- void
- setVecLane(const RegId& reg,
- const LaneData<LaneSize::FourByte>& val) override
- {
- return setVecLaneFlat(flattenRegId(reg).index(), reg.elemIndex(),
val);
- }
- void
- setVecLane(const RegId& reg,
- const LaneData<LaneSize::EightByte>& val) override
- {
- return setVecLaneFlat(flattenRegId(reg).index(), reg.elemIndex(),
val);
- }
- /** @} */
-
const TheISA::VecElem &
readVecElem(const RegId& reg) const override
{
@@ -443,21 +382,6 @@
void setVecRegFlat(RegIndex idx,
const TheISA::VecRegContainer& val) override;
- template <typename VE>
- VecLaneT<VE, true>
- readVecLaneFlat(RegIndex idx, int lId) const
- {
- return cpu->template readArchVecLane<VE>(idx, lId,
- thread->threadId());
- }
-
- template <typename LD>
- void
- setVecLaneFlat(int idx, int lId, const LD& val)
- {
- cpu->template setArchVecLane(idx, lId, thread->threadId(), val);
- }
-
const TheISA::VecElem &readVecElemFlat(RegIndex idx,
const ElemIndex& elemIndex) const override;
void setVecElemFlat(RegIndex idx, const ElemIndex& elemIdx,
diff --git a/src/cpu/simple_thread.hh b/src/cpu/simple_thread.hh
index 317f947..b2321c4 100644
--- a/src/cpu/simple_thread.hh
+++ b/src/cpu/simple_thread.hh
@@ -310,85 +310,6 @@
return regVal;
}
- /** Vector Register Lane Interfaces. */
- /** @{ */
- /** Reads source vector <T> operand. */
- template <typename T>
- VecLaneT<T, true>
- readVecLane(const RegId& reg) const
- {
- int flatIndex = isa->flattenVecIndex(reg.index());
- assert(flatIndex < TheISA::NumVecRegs);
- auto regVal = readVecLaneFlat<T>(flatIndex, reg.elemIndex());
- DPRINTF(VecRegs, "Reading vector lane %d (%d)[%d] as %lx.\n",
- reg.index(), flatIndex, reg.elemIndex(), regVal);
- return regVal;
- }
-
- /** Reads source vector 8bit operand. */
- virtual ConstVecLane8
- readVec8BitLaneReg(const RegId ®) const override
- {
- return readVecLane<uint8_t>(reg);
- }
-
- /** Reads source vector 16bit operand. */
- virtual ConstVecLane16
- readVec16BitLaneReg(const RegId ®) const override
- {
- return readVecLane<uint16_t>(reg);
- }
-
- /** Reads source vector 32bit operand. */
- virtual ConstVecLane32
- readVec32BitLaneReg(const RegId ®) const override
- {
- return readVecLane<uint32_t>(reg);
- }
-
- /** Reads source vector 64bit operand. */
- virtual ConstVecLane64
- readVec64BitLaneReg(const RegId ®) const override
- {
- return readVecLane<uint64_t>(reg);
- }
-
- /** Write a lane of the destination vector register. */
- template <typename LD>
- void
- setVecLaneT(const RegId ®, const LD &val)
- {
- int flatIndex = isa->flattenVecIndex(reg.index());
- assert(flatIndex < TheISA::NumVecRegs);
- setVecLaneFlat(flatIndex, reg.elemIndex(), val);
- DPRINTF(VecRegs, "Reading vector lane %d (%d)[%d] to %lx.\n",
- reg.index(), flatIndex, reg.elemIndex(), val);
- }
- virtual void
- setVecLane(const RegId ®, const LaneData<LaneSize::Byte> &val)
override
- {
- return setVecLaneT(reg, val);
- }
- virtual void
- setVecLane(const RegId ®,
- const LaneData<LaneSize::TwoByte> &val) override
- {
- return setVecLaneT(reg, val);
- }
- virtual void
- setVecLane(const RegId ®,
- const LaneData<LaneSize::FourByte> &val) override
- {
- return setVecLaneT(reg, val);
- }
- virtual void
- setVecLane(const RegId ®,
- const LaneData<LaneSize::EightByte> &val) override
- {
- return setVecLaneT(reg, val);
- }
- /** @} */
-
const TheISA::VecElem &
readVecElem(const RegId ®) const override
{
@@ -609,20 +530,6 @@
vecRegs[reg] = val;
}
- template <typename T>
- VecLaneT<T, true>
- readVecLaneFlat(RegIndex reg, int lId) const
- {
- return vecRegs[reg].laneView<T>(lId);
- }
-
- template <typename LD>
- void
- setVecLaneFlat(RegIndex reg, int lId, const LD &val)
- {
- vecRegs[reg].laneView<typename LD::UnderlyingType>(lId) = val;
- }
-
const TheISA::VecElem &
readVecElemFlat(RegIndex reg, const ElemIndex &elemIndex) const
override
{
diff --git a/src/cpu/thread_context.hh b/src/cpu/thread_context.hh
index 874146a..75f6f5a 100644
--- a/src/cpu/thread_context.hh
+++ b/src/cpu/thread_context.hh
@@ -205,35 +205,6 @@
readVecReg(const RegId& reg) const = 0;
virtual TheISA::VecRegContainer& getWritableVecReg(const RegId& reg) =
0;
- /** Vector Register Lane Interfaces. */
- /** @{ */
- /** Reads source vector 8bit operand. */
- virtual ConstVecLane8
- readVec8BitLaneReg(const RegId& reg) const = 0;
-
- /** Reads source vector 16bit operand. */
- virtual ConstVecLane16
- readVec16BitLaneReg(const RegId& reg) const = 0;
-
- /** Reads source vector 32bit operand. */
- virtual ConstVecLane32
- readVec32BitLaneReg(const RegId& reg) const = 0;
-
- /** Reads source vector 64bit operand. */
- virtual ConstVecLane64
- readVec64BitLaneReg(const RegId& reg) const = 0;
-
- /** Write a lane of the destination vector register. */
- virtual void setVecLane(const RegId& reg,
- const LaneData<LaneSize::Byte>& val) = 0;
- virtual void setVecLane(const RegId& reg,
- const LaneData<LaneSize::TwoByte>& val) = 0;
- virtual void setVecLane(const RegId& reg,
- const LaneData<LaneSize::FourByte>& val) = 0;
- virtual void setVecLane(const RegId& reg,
- const LaneData<LaneSize::EightByte>& val) = 0;
- /** @} */
-
virtual const TheISA::VecElem& readVecElem(const RegId& reg) const = 0;
virtual const TheISA::VecPredRegContainer& readVecPredReg(
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/41899
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Idf1d9b68339eb31b95d4a347548240aa9d2a85cc
Gerrit-Change-Number: 41899
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s