// File: /workspace/github_cpp_makefile_star2_O3/gvaumour[P]cache-simulator/src/common.cc
// Function: init_default_parameters()
void
init_default_parameters()
{
	simu_parameters.enableBP = false;
	simu_parameters.enableMigration= false;
	simu_parameters.flagTest = true;	
	simu_parameters.printDebug = false;
		
	simu_parameters.prefetchDegree = 2;
	simu_parameters.prefetchStreams = 16; 
	simu_parameters.enablePrefetch = false;
	simu_parameters.strongInclusivity = false;
	
	simu_parameters.sram_assoc = 4;
	simu_parameters.nvm_assoc = 12;
	simu_parameters.nb_sets = 2048;
	
	simu_parameters.saturation_threshold = 2;	
	simu_parameters.cost_threshold = -5;
	
	simu_parameters.mediumrd_def = 4;

	simu_parameters.traceLLC = false;

	/********* Predictor Config *************/ 
	simu_parameters.nb_sampled_sets = 2048;
	simu_parameters.simulate_conflicts = false;
	simu_parameters.size_MT_NVMtags = 4;
	simu_parameters.size_MT_SRAMtags = 4;
	simu_parameters.MT_counter_th = 2;
	simu_parameters.MT_timeframe = 1E4;
	simu_parameters.nb_MTcouters_sampling = 1;
	simu_parameters.enableFullSRAMtraffic = false;

	/********* DBAMB Config *************/ 
	simu_parameters.window_size = 20; 
	simu_parameters.learningTH = 20;
	simu_parameters.deadSaturationCouter = 3;

	simu_parameters.rap_assoc = 128;
	simu_parameters.rap_sets = 128;
	
	simu_parameters.ratio_RWcost = -1;
		
	simu_parameters.readDatasetFile = false;
	simu_parameters.writeDatasetFile = false;
	simu_parameters.enableDatasetSpilling = false;
	simu_parameters.datasetFile = RAP_DATASET_FIRSTALLOC;

	simu_parameters.optTarget = EnergyParameters();
	simu_parameters.DBAMB_signature = "first_pc";
	
	simu_parameters.DBAMB_begin_bit = 0;
	simu_parameters.DBAMB_end_bit = 64;
	
	simu_parameters.enableReuseErrorComputation = false;
	simu_parameters.enablePCHistoryTracking = false;
	/***************************************/ 
	

	/********* Perceptron Config *************/ 	
//	simu_parameters.perceptron_features = { "Addr_LSB", "Addr_MSB", "PC_LSB", "PC_MSB"};
	simu_parameters.perceptron_BP_features = { "MissPC_0" , "Addr_2" };
	simu_parameters.perceptron_Allocation_features = { "MissPC_LSB"};
	simu_parameters.perceptron_windowSize = 16;
	
	simu_parameters.perceptron_bypass_threshold = 3;
	simu_parameters.perceptron_bypass_learning = 11;
	simu_parameters.perceptron_allocation_threshold = 5;
	simu_parameters.perceptron_allocation_learning = 11;

	simu_parameters.perceptron_compute_variance = false;
	simu_parameters.perceptron_table_size = 256;
	simu_parameters.perceptron_counter_size = 32;
	simu_parameters.perceptron_drawFeatureMaps = false;

	simu_parameters.perceptron_enableBypass = false;
	/***************************************/ 
	
	/*********** PHC Config ******************/ 
	simu_parameters.PHC_features = {"Addr_3"};
	simu_parameters.PHC_cost_threshold = 0;
	simu_parameters.PHC_cost_mediumRead = -4124;
	simu_parameters.PHC_cost_mediumWrite = -3702;
	simu_parameters.PHC_cost_shortWrite = 405;
	simu_parameters.PHC_cost_shortRead = -35;

	/************ Cerebron Config ************/ 
	simu_parameters.Cerebron_activation_function = "linear";
	simu_parameters.Cerebron_resetEnergyValues = false;
	simu_parameters.Cerebron_separateLearning = false;
	simu_parameters.Cerebron_lowConfidence = false;
	simu_parameters.Cerebron_enableMigration = false;

	simu_parameters.Cerebron_fastlearning = true;
	simu_parameters.Cerebron_independantLearning = true;
	simu_parameters.Cerebron_RDmodel = true;

	/*
	simu_parameters.Cerebron_fastlearning = false;
	simu_parameters.Cerebron_independantLearning = false;
	simu_parameters.Cerebron_RDmodel = false;
	*/
	simu_parameters.Cerebron_decrement_value = 1;

	/************ SimplePerceptron Config *********/ 
	simu_parameters.simple_perceptron_features =  {"Addr_3"};
	simu_parameters.simple_perceptron_learningTreshold = 5;
	simu_parameters.simple_perceptron_fastLearning = false;
	simu_parameters.simple_perceptron_independantLearning = false;
	simu_parameters.simple_perceptron_enableMigration = false;


	simu_parameters.nbCores = 1;
	simu_parameters.policy = "SimplePerceptron";

}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x50, %rsp
xorl %eax, %eax
movw %ax, 0x16e0e(%rip)      # 0x45ff8
movb $0x1, 0x16e13(%rip)     # 0x46004
movb %al, 0x16d59(%rip)      # 0x45f50
movabsq $0x1000000002, %rcx     # imm = 0x1000000002
movq %rcx, 0x16dd4(%rip)     # 0x45fdc
movl $0x4, %ecx
movl %ecx, 0x16d75(%rip)     # 0x45f88
movabsq $0x8000000000c, %rdx    # imm = 0x8000000000C
movq %rdx, 0x16d6c(%rip)     # 0x45f90
movabsq $-0x4fffffffe, %rdx     # imm = 0xFFFFFFFB00000002
movq %rdx, 0x16dd3(%rip)     # 0x46008
movl %ecx, 0x16f11(%rip)     # 0x4614c
movl $0x800, 0x16d53(%rip)   # imm = 0x800
movl $0x0, 0x16d89(%rip)     # 0x45fd8
movabsq $0x400000004, %rcx      # imm = 0x400000004
movq %rcx, 0x16db0(%rip)     # 0x46010
movl $0x2, 0x16dae(%rip)     # 0x46018
movq $0x2710, 0x16dab(%rip) # imm = 0x2710
movl $0x1, 0x16da9(%rip)     # 0x46028
movb %al, 0x16da7(%rip)      # 0x4602c
movabsq $0x1400000014, %rcx     # imm = 0x1400000014
movq %rcx, 0x16d5a(%rip)     # 0x45ff0
movl $0x3, 0x16d4c(%rip)     # 0x45fec
movabsq $0x8000000080, %rcx     # imm = 0x8000000080
movq %rcx, 0x16d4b(%rip)     # 0x45ffc
movl $0xbf800000, 0x16d75(%rip) # imm = 0xBF800000
movw %ax, 0x16de7(%rip)      # 0x460a9
movb %al, 0x16de0(%rip)      # 0x460a8
movq 0x16de9(%rip), %rdx     # 0x460b8
leaq 0x16dda(%rip), %rdi     # 0x460b0
leaq 0x7f07(%rip), %rcx      # 0x371e4
movl $0x1a, %r8d
xorl %esi, %esi
callq 0x54b0
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x2f856
movq 0x16d3c(%rip), %rdi     # 0x46038
movaps (%rbx), %xmm0
movups %xmm0, 0x16d32(%rip)    # 0x46038
movq 0x10(%rbx), %rax
movq %rax, 0x16d37(%rip)     # 0x46048
xorps %xmm1, %xmm1
movaps %xmm1, (%rbx)
movq $0x0, 0x10(%rbx)
testq %rdi, %rdi
je 0x2f32c
callq 0x52b0
xorps %xmm1, %xmm1
movq 0x16d1d(%rip), %rdi     # 0x46050
movups 0x18(%rsp), %xmm0
movups %xmm0, 0x16d11(%rip)    # 0x46050
movq 0x28(%rsp), %rax
movq %rax, 0x16d15(%rip)     # 0x46060
movups %xmm1, 0x18(%rsp)
movq $0x0, 0x28(%rsp)
testq %rdi, %rdi
je 0x2f363
callq 0x52b0
movq 0x16cfe(%rip), %rdi     # 0x46068
movaps 0x30(%rsp), %xmm0
movups %xmm0, 0x16cf2(%rip)    # 0x46068
movq 0x40(%rsp), %rax
movq %rax, 0x16cf6(%rip)     # 0x46078
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
testq %rdi, %rdi
je 0x2f3ac
callq 0x52b0
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x2f3ac
callq 0x52b0
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x2f3bb
callq 0x52b0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2f3c9
callq 0x52b0
movq 0x16cb8(%rip), %rdx     # 0x46088
leaq 0x16ca9(%rip), %rdi     # 0x46080
leaq 0x5ad4(%rip), %rcx      # 0x34eb2
movl $0x8, %r8d
xorl %esi, %esi
callq 0x54b0
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, 0x16ca4(%rip)     # 0x460a0
movw $0x0, 0x16bdf(%rip)     # 0x45fe4
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x7dea(%rip), %rsi      # 0x371ff
leaq 0x7deb(%rip), %rdx      # 0x37207
movq %rsp, %rdi
callq 0xcc6c
leaq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7dcf(%rip), %rsi      # 0x37208
leaq 0x7dce(%rip), %rdx      # 0x3720e
callq 0xcc6c
leaq 0x40(%rsp), %rdx
leaq 0x16c7f(%rip), %rdi     # 0x460d0
movq %rsp, %rsi
callq 0x30048
leaq 0x30(%rsp), %rbx
xorl %r15d, %r15d
movq 0x20(%rsp,%r15), %rdi
leaq (%rbx,%r15), %rax
cmpq %rdi, %rax
je 0x2f474
callq 0x52b0
addq $-0x20, %r15
cmpq $-0x40, %r15
jne 0x2f461
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x6c23(%rip), %rsi      # 0x360ae
leaq 0x6c26(%rip), %rdx      # 0x360b8
callq 0xcc6c
leaq 0x20(%rsp), %rdx
leaq 0x16c45(%rip), %rdi     # 0x460e8
movq %rsp, %rsi
callq 0x30048
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2f4b9
callq 0x52b0
movaps 0x7b10(%rip), %xmm0     # 0x36fd0
movups %xmm0, 0x16c3d(%rip)    # 0x46104
movabsq $0x1000000000b, %rax    # imm = 0x1000000000B
movq %rax, 0x16c3c(%rip)     # 0x46114
movl $0x20, 0x16c1e(%rip)    # 0x46100
movw $0x0, 0x16c31(%rip)     # 0x4611c
movb $0x0, 0x16c2c(%rip)     # 0x4611e
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x7d10(%rip), %rsi      # 0x3720f
leaq 0x7d0f(%rip), %rdx      # 0x37215
callq 0xcc6c
leaq 0x20(%rsp), %rdx
leaq 0x16c09(%rip), %rdi     # 0x46120
movq %rsp, %rsi
callq 0x30048
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2f52d
callq 0x52b0
movaps 0x7aac(%rip), %xmm0     # 0x36fe0
movups %xmm0, 0x16bfd(%rip)    # 0x46138
movl $0xffffffdd, 0x16c03(%rip) # imm = 0xFFFFFFDD
movq 0x16c0c(%rip), %rdx     # 0x46158
leaq 0x16bfd(%rip), %rdi     # 0x46150
leaq 0x4abe(%rip), %rcx      # 0x34018
movl $0x6, %r8d
xorl %esi, %esi
callq 0x54b0
movl $0x0, 0x16c00(%rip)     # 0x46171
movw $0x101, 0x16bfb(%rip)   # imm = 0x101
movb $0x1, 0x16bef(%rip)     # 0x46170
movl $0x1, 0x16bed(%rip)     # 0x46178
movq %rsp, %rdi
movq %r14, (%rdi)
leaq 0x7c77(%rip), %rsi      # 0x3720f
leaq 0x7c76(%rip), %rdx      # 0x37215
callq 0xcc6c
leaq 0x20(%rsp), %rdx
leaq 0x16bd0(%rip), %rdi     # 0x46180
movq %rsp, %rsi
callq 0x30048
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2f5c6
callq 0x52b0
movl $0x5, 0x16bc8(%rip)     # 0x46198
movw $0x0, 0x16bc3(%rip)     # 0x4619c
movb $0x0, 0x16bbe(%rip)     # 0x4619e
movl $0x1, 0x169a2(%rip)     # 0x45f8c
movq 0x169cf(%rip), %rdx     # 0x45fc0
leaq 0x169c0(%rip), %rdi     # 0x45fb8
leaq 0x6221(%rip), %rcx      # 0x35820
movl $0x10, %r8d
xorl %esi, %esi
callq 0x54b0
addq $0x50, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x2f646
jmp 0x2f659
jmp 0x2f646
jmp 0x2f659
jmp 0x2f646
jmp 0x2f659
movq %rax, %rbx
movq $-0x40, %r14
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x2f63a
callq 0x52b0
addq $-0x20, %r15
addq $0x20, %r14
jne 0x2f62c
jmp 0x2f65c
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x2f65c
callq 0x52b0
jmp 0x2f65c
movq %rax, %rbx
movq %rbx, %rdi
callq 0x55a0