// File: /workspace/github_cpp_makefile_star2_O1/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 0x1c1a2(%rip), %rsi     # 0x3582e
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
jne 0x198ea
leaq 0x2c8ad(%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 0x15482
movq 0x48(%rbx), %rdi
movaps (%r15), %xmm0
movq 0x10(%r15), %rax
movq %rdi, (%r15)
movups 0x50(%rbx), %xmm1
movups %xmm0, 0x48(%rbx)
movq %rax, 0x58(%rbx)
movups %xmm1, 0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x1970b
callq 0x52a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1971a
callq 0x52a0
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 0x15482
movq 0x78(%rbx), %rdi
movaps (%r15), %xmm0
movq 0x10(%r15), %rax
movq %rdi, (%r15)
movups 0x80(%rbx), %xmm1
movups %xmm0, 0x78(%rbx)
movq %rax, 0x88(%rbx)
movups %xmm1, 0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x19788
callq 0x52a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19797
callq 0x52a0
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 0x1d0a6
leaq 0xa8(%rbx), %r12
movq %r12, %rdi
callq 0x121dc
leaq 0x10(%rsp), %r15
movq 0x20(%r15), %rax
movq %rax, 0x20(%r12)
movups (%r15), %xmm0
movups 0x10(%r15), %xmm1
movups %xmm1, 0x10(%r12)
movups %xmm0, (%r12)
xorl %r12d, %r12d
movq %r12, 0x10(%r15)
movq 0x1a0(%r13), %rsi
subq 0x198(%r13), %rsi
movl %r12d, 0x18(%r15)
sarq $0x5, %rsi
leaq 0x8(%rsp), %rdx
movl %r12d, (%rdx)
leaq 0x7(%rsp), %rcx
movq %r15, %rdi
callq 0x15482
movq 0x60(%rbx), %rdi
movaps (%r15), %xmm0
movq 0x10(%r15), %rax
movq %rdi, (%r15)
movups 0x68(%rbx), %xmm1
movups %xmm0, 0x60(%rbx)
movq %rax, 0x70(%rbx)
movups %xmm1, 0x8(%r15)
movq %r12, 0x10(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
testq %rdi, %rdi
je 0x19858
callq 0x52a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19867
callq 0x52a0
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 0x15482
movq 0x90(%rbx), %rdi
movaps (%r15), %xmm0
movq 0x10(%r15), %rax
movq %rdi, (%r15)
movups 0x98(%rbx), %xmm1
movups %xmm0, 0x90(%rbx)
movq %rax, 0xa0(%rbx)
movups %xmm1, 0x8(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
testq %rdi, %rdi
je 0x198db
callq 0x52a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x198ea
callq 0x52a0
leaq 0x1bf2a(%rip), %rsi     # 0x3581b
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x19914
leaq 0x1bf1b(%rip), %rsi     # 0x3581f
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
jne 0x1999a
leaq 0x2c635(%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 0x1d10e
movq 0xd0(%rbx), %rdi
movaps (%r15), %xmm0
movq 0x10(%r15), %rax
movq %rdi, (%r15)
movups 0xd8(%rbx), %xmm1
movups %xmm0, 0xd0(%rbx)
movq %rax, 0xe0(%rbx)
movups %xmm1, 0x8(%r15)
movq %r12, 0x10(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
testq %rdi, %rdi
je 0x1998b
callq 0x52a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1999a
callq 0x52a0
leaq 0x1be87(%rip), %rsi     # 0x35828
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
jne 0x19abe
leaq 0x2c598(%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 0x1d182
movq 0xe8(%rbx), %rdi
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
movq %rdi, (%r14)
movups 0xf0(%rbx), %xmm1
movups %xmm0, 0xe8(%rbx)
movq %rax, 0xf8(%rbx)
movups %xmm1, 0x8(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
testq %rdi, %rdi
je 0x19a2c
callq 0x52a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19a3b
callq 0x52a0
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 0x15482
movq 0x100(%rbx), %rdi
movaps (%r14), %xmm0
movq 0x10(%r14), %rax
movq %rdi, (%r14)
movups 0x108(%rbx), %xmm1
movups %xmm0, 0x100(%rbx)
movq %rax, 0x110(%rbx)
movups %xmm1, 0x8(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
testq %rdi, %rdi
je 0x19aaf
callq 0x52a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19abe
callq 0x52a0
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rdi
callq 0xc9f0