// File: /workspace/github_cpp_makefile_star2_O2/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 %r14
pushq %rbx
subq $0x58, %rsp
andw $0x0, 0x185fe(%rip)     # 0x3dff8
movb $0x1, 0x18603(%rip)     # 0x3e004
xorl %eax, %eax
movb %al, 0x18547(%rip)      # 0x3df50
movabsq $0x1000000002, %rcx     # imm = 0x1000000002
movq %rcx, 0x185c2(%rip)     # 0x3dfdc
pushq $0x4
popq %rcx
movl %ecx, 0x18565(%rip)     # 0x3df88
movabsq $0x8000000000c, %rdx    # imm = 0x8000000000C
movq %rdx, 0x1855c(%rip)     # 0x3df90
movabsq $-0x4fffffffe, %rdx     # imm = 0xFFFFFFFB00000002
movq %rdx, 0x185c3(%rip)     # 0x3e008
movl %ecx, 0x18701(%rip)     # 0x3e14c
movl $0x800, 0x18543(%rip)   # imm = 0x800
andl $0x0, 0x1857c(%rip)     # 0x3dfd8
movabsq $0x400000004, %rcx      # imm = 0x400000004
movq %rcx, 0x185a3(%rip)     # 0x3e010
movl $0x2, 0x185a1(%rip)     # 0x3e018
movq $0x2710, 0x1859e(%rip) # imm = 0x2710
movl $0x1, 0x1859c(%rip)     # 0x3e028
movb %al, 0x1859a(%rip)      # 0x3e02c
movabsq $0x1400000014, %rcx     # imm = 0x1400000014
movq %rcx, 0x1854d(%rip)     # 0x3dff0
movl $0x3, 0x1853f(%rip)     # 0x3dfec
movabsq $0x8000000080, %rcx     # imm = 0x8000000080
movq %rcx, 0x1853e(%rip)     # 0x3dffc
movl $0xbf800000, 0x18568(%rip) # imm = 0xBF800000
andw $0x0, 0x185d9(%rip)     # 0x3e0a9
movb %al, 0x185d2(%rip)      # 0x3e0a8
leaq 0x185d3(%rip), %rdi     # 0x3e0b0
leaq 0x66b0(%rip), %rsi      # 0x2c194
callq 0x55c0
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x25f86
leaq 0x1853b(%rip), %rdi     # 0x3e038
movq %rbx, %rsi
callq 0x26090
movq %rbx, %rdi
callq 0x9ed6
leaq 0x1856c(%rip), %rdi     # 0x3e080
leaq 0x4377(%rip), %rsi      # 0x29e92
callq 0x55c0
movabsq $0x4000000000, %rax     # imm = 0x4000000000
movq %rax, 0x1856f(%rip)     # 0x3e0a0
andw $0x0, 0x184ab(%rip)     # 0x3dfe4
leaq 0x666f(%rip), %rsi      # 0x2c1af
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5140
leaq 0x30(%rsp), %rdi
leaq 0x665d(%rip), %rsi      # 0x2c1b8
leaq 0xf(%rsp), %rdx
callq 0x5140
leaq 0x50(%rsp), %rdx
leaq 0x1855f(%rip), %rdi     # 0x3e0d0
leaq 0x10(%rsp), %rsi
callq 0x266da
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x10, %rdi
callq 0x5618
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x25b7e
leaq 0x54c2(%rip), %rsi      # 0x2b05e
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5140
leaq 0x30(%rsp), %rdx
leaq 0x18531(%rip), %rdi     # 0x3e0e8
leaq 0x10(%rsp), %rsi
callq 0x266da
leaq 0x10(%rsp), %rdi
callq 0x5618
movaps 0x63ae(%rip), %xmm0     # 0x2bf80
movups %xmm0, 0x1852b(%rip)    # 0x3e104
movabsq $0x1000000000b, %rax    # imm = 0x1000000000B
movq %rax, 0x1852a(%rip)     # 0x3e114
movl $0x20, 0x1850c(%rip)    # 0x3e100
andw $0x0, 0x18520(%rip)     # 0x3e11c
movb $0x0, 0x1851b(%rip)     # 0x3e11e
leaq 0x65b5(%rip), %rsi      # 0x2c1bf
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5140
leaq 0x30(%rsp), %rdx
leaq 0x184fb(%rip), %rdi     # 0x3e120
leaq 0x10(%rsp), %rsi
callq 0x266da
leaq 0x10(%rsp), %rdi
callq 0x5618
movaps 0x6350(%rip), %xmm0     # 0x2bf90
movups %xmm0, 0x184f1(%rip)    # 0x3e138
movl $0xffffffdd, 0x184f7(%rip) # imm = 0xFFFFFFDD
leaq 0x184f8(%rip), %rdi     # 0x3e150
leaq 0x33d5(%rip), %rsi      # 0x29034
callq 0x55c0
andl $0x0, 0x18506(%rip)     # 0x3e171
movw $0x101, 0x18501(%rip)   # imm = 0x101
movb $0x1, 0x184f5(%rip)     # 0x3e170
movl $0x1, 0x184f3(%rip)     # 0x3e178
leaq 0x6533(%rip), %rsi      # 0x2c1bf
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5140
leaq 0x30(%rsp), %rdx
leaq 0x184d9(%rip), %rdi     # 0x3e180
leaq 0x10(%rsp), %rsi
callq 0x266da
leaq 0x10(%rsp), %rdi
callq 0x5618
movl $0x5, 0x184d3(%rip)     # 0x3e198
andw $0x0, 0x184cf(%rip)     # 0x3e19c
movb $0x0, 0x184ca(%rip)     # 0x3e19e
movl $0x1, 0x182ae(%rip)     # 0x3df8c
leaq 0x182d3(%rip), %rdi     # 0x3dfb8
leaq 0x4ae4(%rip), %rsi      # 0x2a7d0
callq 0x55c0
addq $0x58, %rsp
popq %rbx
popq %r14
retq
jmp 0x25d25
jmp 0x25d34
jmp 0x25d25
jmp 0x25d34
jmp 0x25d25
jmp 0x25d34
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x10, %rdi
callq 0x5618
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x25d0c
jmp 0x25d37
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5618
jmp 0x25d37
movq %rax, %rbx
movq %rbx, %rdi
callq 0x5570
nop