cpu: Add support for Memory+Barrier instruction types in O3 cpu.
This commit is contained in:
parent
90b1775a8f
commit
3436de0c2a
1 changed files with 11 additions and 5 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011-2012 ARM Limited
|
* Copyright (c) 2011-2013 ARM Limited
|
||||||
* Copyright (c) 2013 Advanced Micro Devices, Inc.
|
* Copyright (c) 2013 Advanced Micro Devices, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -1157,11 +1157,17 @@ InstructionQueue<Impl>::doSquash(ThreadID tid)
|
||||||
DPRINTF(IQ, "[tid:%i]: Instruction [sn:%lli] PC %s squashed.\n",
|
DPRINTF(IQ, "[tid:%i]: Instruction [sn:%lli] PC %s squashed.\n",
|
||||||
tid, squashed_inst->seqNum, squashed_inst->pcState());
|
tid, squashed_inst->seqNum, squashed_inst->pcState());
|
||||||
|
|
||||||
|
bool is_acq_rel = squashed_inst->isMemBarrier() &&
|
||||||
|
(squashed_inst->isLoad() ||
|
||||||
|
(squashed_inst->isStore() &&
|
||||||
|
!squashed_inst->isStoreConditional()));
|
||||||
|
|
||||||
// Remove the instruction from the dependency list.
|
// Remove the instruction from the dependency list.
|
||||||
if (!squashed_inst->isNonSpeculative() &&
|
if (is_acq_rel ||
|
||||||
!squashed_inst->isStoreConditional() &&
|
(!squashed_inst->isNonSpeculative() &&
|
||||||
!squashed_inst->isMemBarrier() &&
|
!squashed_inst->isStoreConditional() &&
|
||||||
!squashed_inst->isWriteBarrier()) {
|
!squashed_inst->isMemBarrier() &&
|
||||||
|
!squashed_inst->isWriteBarrier())) {
|
||||||
|
|
||||||
for (int src_reg_idx = 0;
|
for (int src_reg_idx = 0;
|
||||||
src_reg_idx < squashed_inst->numSrcRegs();
|
src_reg_idx < squashed_inst->numSrcRegs();
|
||||||
|
|
Loading…
Reference in a new issue