// File: /workspace/github_cpp_makefile_star2_O3/gvaumour[P]cache-simulator/src/HybridCache.cc
// Function: HybridCache::initializeLearningCl(CacheEntry*)
void
HybridCache::initializeLearningCl(CacheEntry* entry)
{

	if(m_policy == "Perceptron")
	{
		entry->perceptron_BPpred = vector<int>(simu_parameters.perceptron_BP_features.size() , 0);
		entry->perceptron_BPHash = vector<int>(simu_parameters.perceptron_BP_features.size() , 0);
		entry->predictedReused = vector<bool>(simu_parameters.perceptron_BP_features.size() , false);

		entry->perceptron_Allocpred = vector<int>(simu_parameters.perceptron_Allocation_features.size() , 0);
		entry->perceptron_AllocHash = vector<int>(simu_parameters.perceptron_Allocation_features.size() , 0);	
	}

	if(m_policy == "PHC" || m_policy == "Cerebron")
	{
		entry->PHC_allocation_pred = vector< pair<int,allocDecision> >(simu_parameters.PHC_features.size()\
			 , pair<int,allocDecision>(0, ALLOCATE_IN_SRAM) );
	}
	
	if( m_policy == "SimplePerceptron")
	{
		entry->simple_perceptron_pred =  vector<allocDecision>(simu_parameters.simple_perceptron_features.size() , ALLOCATE_IN_NVM);
		entry->simple_perceptron_hash = vector<int>(simu_parameters.simple_perceptron_features.size() , 0);
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rsi, %rbx
movq %rdi, %r14
addq $0x70, %r14
leaq 0x1c462(%rip), %rsi     # 0x35826
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x19496
leaq 0x1c438(%rip), %rsi     # 0x35813
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x193fa
leaq 0x1c429(%rip), %rsi     # 0x35817
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
jne 0x19471
leaq 0x2cb4f(%rip), %rax     # 0x45f50
movq 0x1d8(%rax), %rsi
subq 0x1d0(%rax), %rsi
sarq $0x5, %rsi
xorl %r12d, %r12d
leaq 0x8(%rsp), %rdx
movq %r12, (%rdx)
leaq 0x10(%rsp), %r15
leaq 0x7(%rsp), %rcx
movq %r15, %rdi
callq 0x1cec4
movq 0xd0(%rbx), %rdi
movaps (%r15), %xmm0
movups %xmm0, 0xd0(%rbx)
movq 0x10(%r15), %rax
movq %rax, 0xe0(%rbx)
movq %r12, 0x10(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
testq %rdi, %rdi
je 0x19471
callq 0x52b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19471
callq 0x52b0
leaq 0x1c3a8(%rip), %rsi     # 0x35820
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x196bb
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x2cab3(%rip), %r13     # 0x45f50
movq 0x188(%r13), %rsi
subq 0x180(%r13), %rsi
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x10(%rsp), %r15
leaq 0x7(%rsp), %rcx
movq %r15, %rdi
callq 0x152ee
movq 0x48(%rbx), %rdi
movaps (%r15), %xmm0
movups %xmm0, 0x48(%rbx)
movq 0x10(%r15), %rax
movq %rax, 0x58(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x19508
callq 0x52b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19508
callq 0x52b0
movq 0x188(%r13), %rsi
subq 0x180(%r13), %rsi
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x10(%rsp), %r15
leaq 0x7(%rsp), %rcx
movq %r15, %rdi
callq 0x152ee
movq 0x78(%rbx), %rdi
movaps (%r15), %xmm0
movups %xmm0, 0x78(%rbx)
movq 0x10(%r15), %rax
movq %rax, 0x88(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x19576
callq 0x52b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19576
callq 0x52b0
movq 0x188(%r13), %rsi
subq 0x180(%r13), %rsi
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x10(%rsp), %rdi
leaq 0x7(%rsp), %rcx
callq 0x1ce5c
leaq 0xa8(%rbx), %r15
movq %r15, %rdi
callq 0x12132
leaq 0x10(%rsp), %r12
movq 0x20(%r12), %rax
movq %rax, 0x20(%r15)
movups (%r12), %xmm0
movups 0x10(%r12), %xmm1
movups %xmm1, 0x10(%r15)
movups %xmm0, (%r15)
movq 0x1a0(%r13), %rsi
subq 0x198(%r13), %rsi
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x7(%rsp), %rcx
movq %r12, %rdi
callq 0x152ee
movq 0x60(%rbx), %rdi
movaps (%r12), %xmm0
movups %xmm0, 0x60(%rbx)
movq 0x10(%r12), %rax
movq %rax, 0x70(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%r12)
movq $0x0, 0x10(%r12)
testq %rdi, %rdi
je 0x1963a
callq 0x52b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1963a
callq 0x52b0
movq 0x1a0(%r13), %rsi
subq 0x198(%r13), %rsi
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x10(%rsp), %r15
leaq 0x7(%rsp), %rcx
movq %r15, %rdi
callq 0x152ee
movq 0x90(%rbx), %rdi
movaps (%r15), %xmm0
movups %xmm0, 0x90(%rbx)
movq 0x10(%r15), %rax
movq %rax, 0xa0(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x193d4
callq 0x52b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x193d4
callq 0x52b0
jmp 0x193d4
leaq 0x2c88e(%rip), %r15     # 0x45f50
movq 0x238(%r15), %rsi
subq 0x230(%r15), %rsi
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movl $0x1, (%rdx)
leaq 0x10(%rsp), %r14
leaq 0x7(%rsp), %rcx
movq %r14, %rdi
callq 0x1cf46
movq 0xe8(%rbx), %rdi
movaps (%r14), %xmm0
movups %xmm0, 0xe8(%rbx)
movq 0x10(%r14), %rax
movq %rax, 0xf8(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
testq %rdi, %rdi
je 0x19736
callq 0x52b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19736
callq 0x52b0
movq 0x238(%r15), %rsi
subq 0x230(%r15), %rsi
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movl $0x0, (%rdx)
leaq 0x10(%rsp), %r14
leaq 0x7(%rsp), %rcx
movq %r14, %rdi
callq 0x152ee
movq 0x100(%rbx), %rdi
movaps (%r14), %xmm0
movups %xmm0, 0x100(%rbx)
movq 0x10(%r14), %rax
movq %rax, 0x110(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
testq %rdi, %rdi
je 0x19488
callq 0x52b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19488
callq 0x52b0
jmp 0x19488
movq %rax, %rdi
callq 0xc99c
nop