decode_impl.hh (8809:bb10807da889) decode_impl.hh (8842:a02932e2e73d)
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

273DefaultDecode<Impl>::squash(DynInstPtr &inst, ThreadID tid)
274{
275 DPRINTF(Decode, "[tid:%i]: [sn:%i] Squashing due to incorrect branch "
276 "prediction detected at decode.\n", tid, inst->seqNum);
277
278 // Send back mispredict information.
279 toFetch->decodeInfo[tid].branchMispredict = true;
280 toFetch->decodeInfo[tid].predIncorrect = true;
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

273DefaultDecode<Impl>::squash(DynInstPtr &inst, ThreadID tid)
274{
275 DPRINTF(Decode, "[tid:%i]: [sn:%i] Squashing due to incorrect branch "
276 "prediction detected at decode.\n", tid, inst->seqNum);
277
278 // Send back mispredict information.
279 toFetch->decodeInfo[tid].branchMispredict = true;
280 toFetch->decodeInfo[tid].predIncorrect = true;
281 toFetch->decodeInfo[tid].mispredictInst = inst;
281 toFetch->decodeInfo[tid].squash = true;
282 toFetch->decodeInfo[tid].doneSeqNum = inst->seqNum;
283 toFetch->decodeInfo[tid].nextPC = inst->branchTarget();
284 toFetch->decodeInfo[tid].branchTaken = inst->pcState().branching();
285 toFetch->decodeInfo[tid].squashInst = inst;
282 toFetch->decodeInfo[tid].squash = true;
283 toFetch->decodeInfo[tid].doneSeqNum = inst->seqNum;
284 toFetch->decodeInfo[tid].nextPC = inst->branchTarget();
285 toFetch->decodeInfo[tid].branchTaken = inst->pcState().branching();
286 toFetch->decodeInfo[tid].squashInst = inst;
287 if (toFetch->decodeInfo[tid].mispredictInst->isUncondCtrl()) {
288 toFetch->decodeInfo[tid].branchTaken = true;
289 }
286
287 InstSeqNum squash_seq_num = inst->seqNum;
288
289 // Might have to tell fetch to unblock.
290 if (decodeStatus[tid] == Blocked ||
291 decodeStatus[tid] == Unblocking) {
292 toFetch->decodeUnblock[tid] = 1;
293 }

--- 464 unchanged lines hidden ---
290
291 InstSeqNum squash_seq_num = inst->seqNum;
292
293 // Might have to tell fetch to unblock.
294 if (decodeStatus[tid] == Blocked ||
295 decodeStatus[tid] == Unblocking) {
296 toFetch->decodeUnblock[tid] = 1;
297 }

--- 464 unchanged lines hidden ---