From 44199a841b71466d33446e5f46feb4e840c5ec6e Mon Sep 17 00:00:00 2001 From: jon Date: Wed, 29 Apr 2020 18:34:02 +0100 Subject: [PATCH] Only check the bounds of nextPc if the branch is taken... --- src_Core/RISCY_OOO/procs/lib/Exec.bsv | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src_Core/RISCY_OOO/procs/lib/Exec.bsv b/src_Core/RISCY_OOO/procs/lib/Exec.bsv index b1e0055..0544307 100755 --- a/src_Core/RISCY_OOO/procs/lib/Exec.bsv +++ b/src_Core/RISCY_OOO/procs/lib/Exec.bsv @@ -286,7 +286,10 @@ function ExecResult basicExec(DecodedInst dInst, CapPipe rVal1, CapPipe rVal2, C BrFunc br_f = dInst.execFunc matches tagged Br .br_f ? br_f : NT; cf.taken = aluBr(getAddr(rVal1), getAddr(rVal2), br_f); cf.nextPc = brAddrCalc(pcc, rVal1, dInst.iType, fromMaybe(0,getDInstImm(dInst)), cf.taken, orig_inst, (ccall || cjalr)); - if (dInst.execFunc matches tagged Br .unused) rVal1 = cf.nextPc; + if (dInst.execFunc matches tagged Br .unused) begin + rVal1 = cf.nextPc; + if (!cf.taken) dInst.capChecks.check_enable = False; + end cf.mispredict = cf.nextPc != ppc; Data inspect_result = capInspect(rVal1, aluVal2, dInst.execFunc.CapInspect);