mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Use fast path for 32-bit Const integer constructor in more places
This commit is contained in:
		
							parent
							
								
									ec52d6c649
								
							
						
					
					
						commit
						7814aa0c31
					
				
					 6 changed files with 10 additions and 9 deletions
				
			
		|  | @ -258,7 +258,7 @@ Const json_parse_attr_param_value(JsonNode *node) | ||||||
| 		} | 		} | ||||||
| 	} else | 	} else | ||||||
| 	if (node->type == 'N') { | 	if (node->type == 'N') { | ||||||
| 		value = Const(node->data_number, 32); | 		value = Const(node->data_number); | ||||||
| 		if (node->data_number < 0) | 		if (node->data_number < 0) | ||||||
| 			value.flags |= RTLIL::CONST_FLAG_SIGNED; | 			value.flags |= RTLIL::CONST_FLAG_SIGNED; | ||||||
| 	} else | 	} else | ||||||
|  |  | ||||||
|  | @ -465,7 +465,7 @@ constant: | ||||||
| 		free($1); | 		free($1); | ||||||
| 	} | | 	} | | ||||||
| 	TOK_INT { | 	TOK_INT { | ||||||
| 		$$ = new RTLIL::Const($1, 32); | 		$$ = new RTLIL::Const($1); | ||||||
| 	} | | 	} | | ||||||
| 	TOK_STRING { | 	TOK_STRING { | ||||||
| 		$$ = new RTLIL::Const($1); | 		$$ = new RTLIL::Const($1); | ||||||
|  |  | ||||||
|  | @ -267,13 +267,13 @@ static const RTLIL::Const extract_vhdl_bit_vector(std::string &val, std::string | ||||||
| static const RTLIL::Const extract_vhdl_integer(std::string &val) | static const RTLIL::Const extract_vhdl_integer(std::string &val) | ||||||
| { | { | ||||||
| 	char *end; | 	char *end; | ||||||
| 	return RTLIL::Const((int)std::strtol(val.c_str(), &end, 10), 32); | 	return RTLIL::Const((int)std::strtol(val.c_str(), &end, 10)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static const RTLIL::Const extract_vhdl_char(std::string &val) | static const RTLIL::Const extract_vhdl_char(std::string &val) | ||||||
| { | { | ||||||
| 	if (val.size()==3 && val[0]=='\"' && val.back()=='\"') | 	if (val.size()==3 && val[0]=='\"' && val.back()=='\"') | ||||||
| 		return RTLIL::Const((int)val[1], 32); | 		return RTLIL::Const((int)val[1]); | ||||||
| 	log_error("Error parsing VHDL character.\n"); | 	log_error("Error parsing VHDL character.\n"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -311,7 +311,7 @@ static const  RTLIL::Const extract_vhdl_const(const char *value, bool output_sig | ||||||
| 	} else if ((value[0] == '-' || (value[0] >= '0' && value[0] <= '9')) && | 	} else if ((value[0] == '-' || (value[0] >= '0' && value[0] <= '9')) && | ||||||
| 			((decimal = std::strtol(value, &end, 10)), !end[0])) { | 			((decimal = std::strtol(value, &end, 10)), !end[0])) { | ||||||
| 		is_signed = output_signed; | 		is_signed = output_signed; | ||||||
| 		c = RTLIL::Const((int)decimal, 32); | 		c = RTLIL::Const((int)decimal); | ||||||
| 	} else if (val == "false") { | 	} else if (val == "false") { | ||||||
| 		c = RTLIL::Const::from_string("0"); | 		c = RTLIL::Const::from_string("0"); | ||||||
| 	} else if (val == "true") { | 	} else if (val == "true") { | ||||||
|  | @ -344,7 +344,7 @@ static const  RTLIL::Const extract_verilog_const(const char *value, bool allow_s | ||||||
| 	} else if ((value[0] == '-' || (value[0] >= '0' && value[0] <= '9')) && | 	} else if ((value[0] == '-' || (value[0] >= '0' && value[0] <= '9')) && | ||||||
| 			((decimal = std::strtol(value, &end, 10)), !end[0])) { | 			((decimal = std::strtol(value, &end, 10)), !end[0])) { | ||||||
| 		is_signed = output_signed; | 		is_signed = output_signed; | ||||||
| 		c = RTLIL::Const((int)decimal, 32); | 		c = RTLIL::Const((int)decimal); | ||||||
| 	} else if (allow_string) { | 	} else if (allow_string) { | ||||||
| 		c = RTLIL::Const(val); | 		c = RTLIL::Const(val); | ||||||
| 	} else { | 	} else { | ||||||
|  |  | ||||||
|  | @ -1013,7 +1013,8 @@ struct RTLIL::SigChunk | ||||||
| 	SigChunk(RTLIL::Wire *wire) : wire(wire), width(GetSize(wire)), offset(0) {} | 	SigChunk(RTLIL::Wire *wire) : wire(wire), width(GetSize(wire)), offset(0) {} | ||||||
| 	SigChunk(RTLIL::Wire *wire, int offset, int width = 1) : wire(wire), width(width), offset(offset) {} | 	SigChunk(RTLIL::Wire *wire, int offset, int width = 1) : wire(wire), width(width), offset(offset) {} | ||||||
| 	SigChunk(const std::string &str) : SigChunk(RTLIL::Const(str)) {} | 	SigChunk(const std::string &str) : SigChunk(RTLIL::Const(str)) {} | ||||||
| 	SigChunk(int val, int width = 32) : SigChunk(RTLIL::Const(val, width)) {} | 	SigChunk(int val) /*default width 32*/ : SigChunk(RTLIL::Const(val)) {} | ||||||
|  | 	SigChunk(int val, int width) : SigChunk(RTLIL::Const(val, width)) {} | ||||||
| 	SigChunk(RTLIL::State bit, int width = 1) : SigChunk(RTLIL::Const(bit, width)) {} | 	SigChunk(RTLIL::State bit, int width = 1) : SigChunk(RTLIL::Const(bit, width)) {} | ||||||
| 	SigChunk(const RTLIL::SigBit &bit); | 	SigChunk(const RTLIL::SigBit &bit); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -82,7 +82,7 @@ void create_ice40_dsp(ice40_dsp_pm &pm) | ||||||
| 
 | 
 | ||||||
| 	SigSpec CD = st.sigCD; | 	SigSpec CD = st.sigCD; | ||||||
| 	if (CD.empty()) | 	if (CD.empty()) | ||||||
| 		CD = RTLIL::Const(0, 32); | 		CD = RTLIL::Const(0); | ||||||
| 	else | 	else | ||||||
| 		log_assert(GetSize(CD) == 32); | 		log_assert(GetSize(CD) == 32); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ struct QlBramMergeWorker { | ||||||
| 		{ | 		{ | ||||||
| 			if(cell->type != split_cell_type) continue; | 			if(cell->type != split_cell_type) continue; | ||||||
| 			if(!cell->hasParam(ID(OPTION_SPLIT))) continue; | 			if(!cell->hasParam(ID(OPTION_SPLIT))) continue; | ||||||
| 			if(cell->getParam(ID(OPTION_SPLIT)) != RTLIL::Const(1, 32)) continue; | 			if(cell->getParam(ID(OPTION_SPLIT)) != RTLIL::Const(1)) continue; | ||||||
| 			mergeable_groups[get_key(cell)].insert(cell); | 			mergeable_groups[get_key(cell)].insert(cell); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue