diff --git a/src/arch/mips/isa/decoder.isa b/src/arch/mips/isa/decoder.isa index 76453b09f6..73e2b5dc88 100644 --- a/src/arch/mips/isa/decoder.isa +++ b/src/arch/mips/isa/decoder.isa @@ -174,10 +174,10 @@ decode OPCODE_HI default Unknown::unknown() { 0x2: decode FUNCTION_LO { 0x0: HiLoRsSelOp::mfhi({{ Rd = HI_RS_SEL; }}, - IntMultOp, IsIprAccess); + IntMultOp, IsSerializeBefore); 0x1: HiLoRdSelOp::mthi({{ HI_RD_SEL = Rs; }}); 0x2: HiLoRsSelOp::mflo({{ Rd = LO_RS_SEL; }}, - IntMultOp, IsIprAccess); + IntMultOp, IsSerializeBefore); 0x3: HiLoRdSelOp::mtlo({{ LO_RD_SEL = Rs; }}); } diff --git a/src/cpu/StaticInstFlags.py b/src/cpu/StaticInstFlags.py index b70f919b04..151074edcc 100644 --- a/src/cpu/StaticInstFlags.py +++ b/src/cpu/StaticInstFlags.py @@ -89,7 +89,6 @@ class StaticInstFlags(Enum): 'IsNonSpeculative', # Should not be executed speculatively 'IsQuiesce', # Is a quiesce instruction - 'IsIprAccess', # Accesses IPRs 'IsUnverifiable', # Can't be verified by a checker 'IsSyscall', # Causes a system call to be emulated in syscall diff --git a/src/cpu/base_dyn_inst.hh b/src/cpu/base_dyn_inst.hh index bfe0492f83..00639ad8e5 100644 --- a/src/cpu/base_dyn_inst.hh +++ b/src/cpu/base_dyn_inst.hh @@ -557,7 +557,6 @@ class BaseDynInst : public ExecContext, public RefCounted bool isWriteBarrier() const { return staticInst->isWriteBarrier(); } bool isNonSpeculative() const { return staticInst->isNonSpeculative(); } bool isQuiesce() const { return staticInst->isQuiesce(); } - bool isIprAccess() const { return staticInst->isIprAccess(); } bool isUnverifiable() const { return staticInst->isUnverifiable(); } bool isSyscall() const { return staticInst->isSyscall(); } bool isMacroop() const { return staticInst->isMacroop(); } diff --git a/src/cpu/minor/execute.cc b/src/cpu/minor/execute.cc index 45ca00233a..f8db5231a4 100644 --- a/src/cpu/minor/execute.cc +++ b/src/cpu/minor/execute.cc @@ -224,8 +224,7 @@ Execute::tryToBranch(MinorDynInstPtr inst, Fault fault, BranchData &branch) !inst->isFault() && inst->isLastOpInInst() && (inst->staticInst->isSerializeAfter() || - inst->staticInst->isSquashAfter() || - inst->staticInst->isIprAccess()); + inst->staticInst->isSquashAfter()); DPRINTF(Branch, "tryToBranch before: %s after: %s%s\n", pc_before, target, (force_branch ? " (forcing)" : "")); diff --git a/src/cpu/o3/rename_impl.hh b/src/cpu/o3/rename_impl.hh index 1cbe87a569..052012ee26 100644 --- a/src/cpu/o3/rename_impl.hh +++ b/src/cpu/o3/rename_impl.hh @@ -684,8 +684,7 @@ DefaultRename::renameInsts(ThreadID tid) // instructions. This is mainly due to lack of support for // out-of-order operations of either of those classes of // instructions. - if ((inst->isIprAccess() || inst->isSerializeBefore()) && - !inst->isSerializeHandled()) { + if (inst->isSerializeBefore() && !inst->isSerializeHandled()) { DPRINTF(Rename, "Serialize before instruction encountered.\n"); if (!inst->isTempSerializeBefore()) { diff --git a/src/cpu/static_inst.hh b/src/cpu/static_inst.hh index e536b8412c..353c0e3584 100644 --- a/src/cpu/static_inst.hh +++ b/src/cpu/static_inst.hh @@ -190,7 +190,6 @@ class StaticInst : public RefCounted, public StaticInstFlags bool isWriteBarrier() const { return flags[IsWriteBarrier]; } bool isNonSpeculative() const { return flags[IsNonSpeculative]; } bool isQuiesce() const { return flags[IsQuiesce]; } - bool isIprAccess() const { return flags[IsIprAccess]; } bool isUnverifiable() const { return flags[IsUnverifiable]; } bool isSyscall() const { return flags[IsSyscall]; } bool isMacroop() const { return flags[IsMacroop]; }