mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	booth: Do not special-case bottom rows
Later on all the rows are cropped to the target size anyway, so there's no harm in transitionally including extra top bits.
This commit is contained in:
		
							parent
							
								
									da207cdce0
								
							
						
					
					
						commit
						579f6bdc17
					
				
					 1 changed files with 1 additions and 19 deletions
				
			
		|  | @ -331,7 +331,7 @@ struct BoothPassWorker { | ||||||
| 		// data, shift, sign
 | 		// data, shift, sign
 | ||||||
| 		ppij_int.push_back(std::make_tuple(ppij_row_0, 0, s_int[0])); | 		ppij_int.push_back(std::make_tuple(ppij_row_0, 0, s_int[0])); | ||||||
| 
 | 
 | ||||||
| 		for (int i = 1; i < encoder_count - 2; i++) { | 		for (int i = 1; i < encoder_count; i++) { | ||||||
| 			// format 1,S.Data.shift = encoder_ix*2,sign = sb_int[i]
 | 			// format 1,S.Data.shift = encoder_ix*2,sign = sb_int[i]
 | ||||||
| 			SigSpec ppij_row_n; | 			SigSpec ppij_row_n; | ||||||
| 
 | 
 | ||||||
|  | @ -345,24 +345,6 @@ struct BoothPassWorker { | ||||||
| 			ppij_int.push_back(std::make_tuple(ppij_row_n, i * 2, s_int[i])); | 			ppij_int.push_back(std::make_tuple(ppij_row_n, i * 2, s_int[i])); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		// Build second to last row
 |  | ||||||
| 		// format S/,Data + sign bit
 |  | ||||||
| 		SigSpec ppij_row_em1; |  | ||||||
| 		BuildBoothUMultDecoderRowN(module, X, one_int[encoder_count - 2], two_int[encoder_count - 2], s_int[encoder_count - 2], |  | ||||||
| 					   sb_int[encoder_count - 2], ppij_row_em1, encoder_count - 2, |  | ||||||
| 					   false, // include sign
 |  | ||||||
| 					   true	  // no constant
 |  | ||||||
| 		); |  | ||||||
| 		ppij_int.push_back(std::make_tuple(ppij_row_em1, (encoder_count - 2) * 2, s_int[encoder_count - 2])); |  | ||||||
| 		// Build last row
 |  | ||||||
| 		// format Data + sign bit
 |  | ||||||
| 		SigSpec ppij_row_e; |  | ||||||
| 		BuildBoothUMultDecoderRowN(module, X, one_int[encoder_count - 1], two_int[encoder_count - 1], s_int[encoder_count - 1], |  | ||||||
| 					   sb_int[encoder_count - 1], ppij_row_e, encoder_count - 1, |  | ||||||
| 					   true, // no sign
 |  | ||||||
| 					   true	 // no constant
 |  | ||||||
| 		); |  | ||||||
| 		ppij_int.push_back(std::make_tuple(ppij_row_e, (encoder_count - 1) * 2, s_int[encoder_count - 1])); |  | ||||||
| 
 | 
 | ||||||
| 		//  Debug dump out partial products
 | 		//  Debug dump out partial products
 | ||||||
| 		//  DebugDumpPP(ppij_int);
 | 		//  DebugDumpPP(ppij_int);
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue