#define INPUT_AIG
#include   "io_generator/xgate_barrel_shift.h"
#include             	"xgate_barrel_shift_vec.h"

extern const int parameter_input_bit_width 	= PI_WIDTH + 5 ;	
extern const int parameter_output_bit_width	= PO_WIDTH ;	
//extern const int parameter_train_output_bit_width	= 1 ;	


//int	parameter_input_bit_width 	= 80+5; 	//输入bit有几位,写在+6前面。+6是为了防止一些bug的冗余设计。
//int	parameter_output_bit_width	= 65;	 	//输出bit有几位




//#include"io_generator_tmp.h"

extern const int	parameter_search_iterations	= 1; //最大设计次数
extern const int	parameter_test_ios 		= 1000;	//测试要求多少样本
extern const int	parameter_max_samples 		= int(parameter_test_ios*100/32)*32;		//BSD每一个节点最多进行多少次采样

bool* io_generator_function(bool* input_data, bool* output_data) {

	
	int i,j;
	bool* output_data_temp = new bool [parameter_output_bit_width];
	
	io_generator_outer(input_data,output_data_temp);
	//io_generator_single_function_1(input_data,output_data_temp);
	for(i=0;i<parameter_output_bit_width;i++){
		output_data[i] = output_data_temp[i];
	}
	delete [] output_data_temp;
		
	return	output_data;
}

#ifdef INPUT_AIG
uint32_t* io_generator_function_vec(uint32_t* input_data, uint32_t* output_data) {

	
	int i,j;
	uint32_t* output_data_temp = new uint32_t [parameter_output_bit_width];
	
	io_generator_outer_vec(input_data,output_data_temp);
	//io_generator_single_function_1(input_data,output_data_temp);
	for(i=0;i<parameter_output_bit_width;i++){
		output_data[i] = output_data_temp[i];
	}
	delete [] output_data_temp;
		
	return	output_data;
}
#endif
