mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Fixed bug with gshare repair from branch class miss prediction.
This commit is contained in:
		
							parent
							
								
									b7f579a146
								
							
						
					
					
						commit
						4e1e10a729
					
				| @ -123,8 +123,8 @@ module speculativegshare | |||||||
|   assign GHRNextD = FlushD ? {GHRNextE, GHRNextE[0]} : {DirPredictionF[1], GHRF, GHRF[0]}; |   assign GHRNextD = FlushD ? {GHRNextE, GHRNextE[0]} : {DirPredictionF[1], GHRF, GHRF[0]}; | ||||||
|   flopenr  #(k+2) GHRDReg(clk, reset, (~StallD) | FlushD, GHRNextD, OldGHRD); |   flopenr  #(k+2) GHRDReg(clk, reset, (~StallD) | FlushD, GHRNextD, OldGHRD); | ||||||
|   assign GHRD = WrongPredInstrClassD[0] & BranchInstrD  ? {DirPredictionD[1], OldGHRD[k:1]} : // shift right
 |   assign GHRD = WrongPredInstrClassD[0] & BranchInstrD  ? {DirPredictionD[1], OldGHRD[k:1]} : // shift right
 | ||||||
| 				WrongPredInstrClassD[0] & ~BranchInstrD ? OldGHRD[k-2:-1] : // shift left
 | 				WrongPredInstrClassD[0] & ~BranchInstrD ? OldGHRD[k-1:-1] : // shift left
 | ||||||
| 				OldGHRD; | 				OldGHRD[k:0]; | ||||||
| 
 | 
 | ||||||
|   assign GHRNextE = FlushE ? GHRNextM : GHRD; |   assign GHRNextE = FlushE ? GHRNextM : GHRD; | ||||||
|   flopenr  #(k+1) GHREReg(clk, reset, (~StallE) | FlushE, GHRNextE, OldGHRE); |   flopenr  #(k+1) GHREReg(clk, reset, (~StallE) | FlushE, GHRNextE, OldGHRE); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user