// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x50, %rsp
xorl %eax, %eax
movw %ax, 0x16a72(%rip)      # 0x45ff8
movb $0x1, 0x16a77(%rip)     # 0x46004
movb %al, 0x169bd(%rip)      # 0x45f50
movabsq $0x1000000002, %rcx     # imm = 0x1000000002
movq %rcx, 0x16a38(%rip)     # 0x45fdc
movl $0x4, %ecx
movl %ecx, 0x169d9(%rip)     # 0x45f88
movabsq $0x8000000000c, %rdx    # imm = 0x8000000000C
movq %rdx, 0x169d0(%rip)     # 0x45f90
movabsq $-0x4fffffffe, %rdx     # imm = 0xFFFFFFFB00000002
movq %rdx, 0x16a37(%rip)     # 0x46008
movl %ecx, 0x16b75(%rip)     # 0x4614c
movl $0x800, 0x169b7(%rip)   # imm = 0x800
movl $0x0, 0x169ed(%rip)     # 0x45fd8
movabsq $0x400000004, %rcx      # imm = 0x400000004
movq %rcx, 0x16a14(%rip)     # 0x46010
movl $0x2, 0x16a12(%rip)     # 0x46018
movq $0x2710, 0x16a0f(%rip) # imm = 0x2710
movl $0x1, 0x16a0d(%rip)     # 0x46028
movb %al, 0x16a0b(%rip)      # 0x4602c
movabsq $0x1400000014, %rcx     # imm = 0x1400000014
movq %rcx, 0x169be(%rip)     # 0x45ff0
movl $0x3, 0x169b0(%rip)     # 0x45fec
movabsq $0x8000000080, %rcx     # imm = 0x8000000080
movq %rcx, 0x169af(%rip)     # 0x45ffc
movl $0xbf800000, 0x169d9(%rip) # imm = 0xBF800000
movw %ax, 0x16a4b(%rip)      # 0x460a9
movb %al, 0x16a44(%rip)      # 0x460a8
movq 0x16a4d(%rip), %rdx     # 0x460b8
leaq 0x16a3e(%rip), %rdi     # 0x460b0
leaq 0x7b6b(%rip), %rcx      # 0x371e4
movl $0x1a, %r8d
xorl %esi, %esi
callq 0x54b0
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x2fc6c
movq 0x169a0(%rip), %rdi     # 0x46038
movaps (%rbx), %xmm0
movq 0x10(%rbx), %rax
movq %rdi, (%rbx)
movups 0x16997(%rip), %xmm1    # 0x46040
movups %xmm0, 0x16988(%rip)    # 0x46038
movq %rax, 0x16991(%rip)     # 0x46048
movups %xmm1, 0x8(%rbx)
xorps %xmm2, %xmm2
movaps %xmm2, (%rbx)
movq $0x0, 0x10(%rbx)
testq %rdi, %rdi
je 0x2f6d6
callq 0x52a0
xorps %xmm2, %xmm2
movq 0x16973(%rip), %rdi     # 0x46050
movups 0x18(%rsp), %xmm0
movq 0x28(%rsp), %rax
movq %rdi, 0x18(%rsp)
movups 0x16965(%rip), %xmm1    # 0x46058
movups %xmm0, 0x16956(%rip)    # 0x46050
movq %rax, 0x1695f(%rip)     # 0x46060
movaps %xmm1, 0x20(%rsp)
movups %xmm2, 0x18(%rsp)
movq $0x0, 0x28(%rsp)
testq %rdi, %rdi
je 0x2f71e
callq 0x52a0
movq 0x16943(%rip), %rdi     # 0x46068
movaps 0x30(%rsp), %xmm0
movq 0x40(%rsp), %rax
movq %rdi, 0x30(%rsp)
movups 0x16935(%rip), %xmm1    # 0x46070
movups %xmm0, 0x16926(%rip)    # 0x46068
movq %rax, 0x1692f(%rip)     # 0x46078
movups %xmm1, 0x38(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
testq %rdi, %rdi
je 0x2f769
callq 0x52a0
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x2f778
callq 0x52a0
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x2f787
callq 0x52a0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x2f795
callq 0x52a0
movq 0x168ec(%rip), %rdx     # 0x46088
leaq 0x168dd(%rip), %rdi     # 0x46080
leaq 0x5728(%rip), %rcx      # 0x34ed2
movl $0x8, %r8d
xorl %esi, %esi
callq 0x54b0
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, 0x168d8(%rip)     # 0x460a0
movw $0x0, 0x16813(%rip)     # 0x45fe4
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x7a1d(%rip), %rsi      # 0x371ff
leaq 0x7a1e(%rip), %rdx      # 0x37207
movq %rsp, %r15
movq %r15, %rdi
callq 0xccac
leaq 0x20(%rsp), %r14
leaq 0x30(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x79ff(%rip), %rsi      # 0x37208
leaq 0x79fe(%rip), %rdx      # 0x3720e
movq %r14, %rdi
callq 0xccac
leaq 0x40(%rsp), %rdx
leaq 0x168ac(%rip), %rdi     # 0x460d0
movq %rsp, %rsi
callq 0x3049c
leaq 0x30(%rsp), %rbx
xorl %r14d, %r14d
movq 0x20(%rsp,%r14), %rdi
leaq (%rbx,%r14), %rax
cmpq %rdi, %rax
je 0x2f847
callq 0x52a0
addq $-0x20, %r14
cmpq $-0x40, %r14
jne 0x2f834
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0x6858(%rip), %rsi      # 0x360b6
leaq 0x685b(%rip), %rdx      # 0x360c0
callq 0xccac
leaq 0x20(%rsp), %rdx
leaq 0x16872(%rip), %rdi     # 0x460e8
movq %rsp, %rsi
callq 0x3049c
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x2f88c
callq 0x52a0
movaps 0x773d(%rip), %xmm0     # 0x36fd0
movups %xmm0, 0x1686a(%rip)    # 0x46104
movabsq $0x1000000000b, %rax    # imm = 0x1000000000B
movq %rax, 0x16869(%rip)     # 0x46114
movl $0x20, 0x1684b(%rip)    # 0x46100
movw $0x0, 0x1685e(%rip)     # 0x4611c
movb $0x0, 0x16859(%rip)     # 0x4611e
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0x793d(%rip), %rsi      # 0x3720f
leaq 0x793c(%rip), %rdx      # 0x37215
callq 0xccac
leaq 0x20(%rsp), %rdx
leaq 0x16836(%rip), %rdi     # 0x46120
movq %rsp, %rsi
callq 0x3049c
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x2f900
callq 0x52a0
movaps 0x76d9(%rip), %xmm0     # 0x36fe0
movups %xmm0, 0x1682a(%rip)    # 0x46138
movl $0xffffffdd, 0x16830(%rip) # imm = 0xFFFFFFDD
movq 0x16839(%rip), %rdx     # 0x46158
leaq 0x1682a(%rip), %rdi     # 0x46150
leaq 0x4717(%rip), %rcx      # 0x34044
movl $0x6, %r8d
xorl %esi, %esi
callq 0x54b0
movl $0x0, 0x1682d(%rip)     # 0x46171
movw $0x101, 0x16828(%rip)   # imm = 0x101
movb $0x1, 0x1681c(%rip)     # 0x46170
movl $0x1, 0x1681a(%rip)     # 0x46178
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0x78a4(%rip), %rsi      # 0x3720f
leaq 0x78a3(%rip), %rdx      # 0x37215
callq 0xccac
leaq 0x20(%rsp), %rdx
leaq 0x167fd(%rip), %rdi     # 0x46180
movq %rsp, %rsi
callq 0x3049c
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x2f999
callq 0x52a0
movl $0x5, 0x167f5(%rip)     # 0x46198
movw $0x0, 0x167f0(%rip)     # 0x4619c
movb $0x0, 0x167eb(%rip)     # 0x4619e
movl $0x1, 0x165cf(%rip)     # 0x45f8c
movq 0x165fc(%rip), %rdx     # 0x45fc0
leaq 0x165ed(%rip), %rdi     # 0x45fb8
leaq 0x5e56(%rip), %rcx      # 0x35828
movl $0x10, %r8d
xorl %esi, %esi
callq 0x54b0
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
jmp 0x2f9f5
jmp 0x2fa08
jmp 0x2f9f5
jmp 0x2fa08
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x2fa71
callq 0x52a0
jmp 0x2fa71
movq %rax, %rbx
jmp 0x2fa71
movq %rax, %rbx
movq $-0x40, %r12
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x2fa25
callq 0x52a0
addq $-0x20, %r13
addq $0x20, %r12
jne 0x2fa17
movb $0x1, %al
jmp 0x2fa42
movq %rax, %rbx
xorl %eax, %eax
jmp 0x2fa42
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %r14
cmpq %r14, %r15
sete %cl
orb %al, %cl
jne 0x2fa71
addq $-0x10, %r14
movq %rsp, %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x2fa61
callq 0x52a0
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x2fa53
movq %rbx, %rdi
callq 0x55a0
nop