35a36,37 > reg [ PHT_IDXW-1:0] IfId_bhr; // Note: for branch prediction > reg [ PHT_IDXW-1:0] IfId_br_idx; // Note: for branch prediction 48a51,52 > reg [ PHT_IDXW-1:0] IdEx_bhr; // Note: for branch prediction > reg [ PHT_IDXW-1:0] IdEx_br_idx; // Note: for branch prediction 68a73,74 > reg [ PHT_IDXW-1:0] ExMa_bhr; // Note: for branch prediction > reg [ PHT_IDXW-1:0] ExMa_br_idx; // Note: for branch prediction 136c142,148 < assign If_pat_hist = r_pht_entry; --- > > reg [PHT_IDXW-1:0] r_bhr = 0; // branch history register > wire [PHT_IDXW-1:0] w_bhr = (stall || IfId_load_muldiv_use) ? r_bhr : > (ExMa_v && Ma_br_misp) ? {ExMa_bhr[PHT_IDXW-2:0], ExMa_br_tkn} : > (btb_hit) ? {r_bhr[PHT_IDXW-2:0], If_pat_hist[1]} : r_bhr; > always @(posedge clk_i) r_bhr <= w_bhr; > 145,147c157,161 < wire [PHT_IDXW-1:0] pht_ridx = If_pc >> 2; < wire [PHT_IDXW-1:0] pht_widx = ExMa_pc >> 2; < reg [1:0] r_pht_entry; --- > > wire [PHT_IDXW-1:0] pht_ridx = (r_pc >> 2) ^ r_bhr; // Note > wire [PHT_IDXW-1:0] pht_widx = ExMa_br_idx; // Note > assign If_pat_hist = pht[pht_ridx]; // Note !!! > 149d162 < r_pht_entry <= pht[pht_ridx]; 204a218,219 > IfId_bhr <= r_bhr; // Note > IfId_br_idx <= pht_ridx; // Note 286a302,303 > IdEx_bhr <= IfId_bhr; // Note > IdEx_br_idx <= IfId_br_idx; // Note 418a436,437 > ExMa_bhr <= IdEx_bhr; // Note > ExMa_br_idx <= IdEx_br_idx; // Note