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 --- |