// File: /workspace/github_cpp_makefile_star2_O1/gioannides[P]Language_Processors/src/../include/ast/class_forward_declarations.hpp
// Function: typePromotion(int, int, std::basic_ofstream<char, std::char_traits<char>>&, Context&)
inline void typePromotion(int reg1,int reg2, std::ofstream& file,Context& contxt){
	if(contxt.regType[reg1] != 'f' && contxt.regType[reg2] != 'f' && reg2 > 1 && reg1 > 1){
		//do nothing
	}
	else if(contxt.regType[reg1] != contxt.regType[reg2] && reg2 > 1 && reg1 > 1){
		if(contxt.regType[reg1] != 'f'  && contxt.regType[reg2] == 'f'){
			file << std::endl << "\tmtc1\t$" << reg1 << ",$f" << reg1;
			file << std::endl << "\tnop" << std::endl;
			file << std::endl << "\tcvt.s.w\t$f" << reg1 << ",$f" << reg1;
			file << std::endl << "\tnop" << std::endl;
			if(contxt.regType[reg1] == 'u'){
				file << std::endl << "\tandi\t$" << reg1 << ",$" << reg1 << ",0xFF";
			}
		
		}
		else if(contxt.regType[reg1] == 'f' && contxt.regType[reg2] != 'f'){
			file << std::endl << "\tmtc1\t$" << reg2 << ",$f" << reg2;
			file << std::endl << "\tnop" << std::endl;
			file << std::endl << "\tcvt.s.w\t$f" << reg2 << ",$f" << reg2;
			file << std::endl << "\tnop" << std::endl;
			if(contxt.regType[reg1] == 'u'){
				file << std::endl << "\tandi\t$" << reg2 << ",$" << reg2 << ",0xFF";
			}
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r14
movq %rdx, %rbx
movl %esi, %r15d
movl %edi, %ebp
movslq %edi, %rdi
movb 0x341(%rcx,%rdi), %al
movslq %esi, %rcx
cmpb $0x66, %al
je 0x13934
cmpl $0x2, %ebp
jl 0x13934
cmpl $0x2, %r15d
jl 0x13934
cmpb $0x66, 0x341(%r14,%rcx)
jne 0x13d7b
cmpl $0x2, %ebp
jl 0x13d7b
cmpl $0x2, %r15d
jl 0x13d7b
movb 0x341(%r14,%rcx), %cl
cmpb %cl, %al
je 0x13d7b
cmpb $0x66, %al
sete %dl
cmpb $0x66, %cl
setne %sil
orb %dl, %sil
jne 0x13b23
movq (%rbx), %rax
movq %rdi, (%rsp)
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r15
leaq 0x24121(%rip), %rsi     # 0x37ac2
movl $0x7, %edx
movq %rax, %rdi
callq 0x73a0
movq %r15, %rdi
movl %ebp, %esi
callq 0x75c0
movq %rax, %r12
leaq 0x23db3(%rip), %r15     # 0x37775
movl $0x3, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movq %r12, %rdi
movl %ebp, %esi
callq 0x75c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r13
leaq 0x23be5(%rip), %r12     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x73a0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r13, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r13
leaq 0x240a9(%rip), %rsi     # 0x37b1f
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
movq %r13, %rdi
movl %ebp, %esi
callq 0x75c0
movq %rax, %r13
movl $0x3, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x73a0
movq %r13, %rdi
movl %ebp, %esi
callq 0x75c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x73a0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r15, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq (%rsp), %rax
cmpb $0x75, 0x341(%r14,%rax)
je 0x13cf0
jmp 0x13d7b
cmpb $0x66, %cl
sete %cl
cmpb $0x66, %al
setne %al
orb %cl, %al
jne 0x13d7b
movq (%rbx), %rax
movq %rdi, (%rsp)
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
leaq 0x23f57(%rip), %rsi     # 0x37ac2
movl $0x7, %edx
movq %rax, %rdi
callq 0x73a0
movq %r12, %rdi
movl %r15d, %esi
callq 0x75c0
movq %rax, %r13
leaq 0x23be8(%rip), %r12     # 0x37775
movl $0x3, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x73a0
movq %r13, %rdi
movl %r15d, %esi
callq 0x75c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %rbp
leaq 0x23a19(%rip), %r13     # 0x375f2
movl $0x4, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x73a0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbp, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %rbp
leaq 0x23edd(%rip), %rsi     # 0x37b1f
movl $0xb, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbp, %rdi
movl %r15d, %esi
callq 0x75c0
movq %rax, %rbp
movl $0x3, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x73a0
movq %rbp, %rdi
movl %r15d, %esi
callq 0x75c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x73a0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %r12, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq (%rsp), %rax
cmpb $0x75, 0x341(%r14,%rax)
movl %r15d, %ebp
jne 0x13d7b
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x7300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x7040
movq %rax, %rdi
callq 0x7220
movq %rax, %rbx
leaq 0x23ba0(%rip), %rsi     # 0x378c1
movl $0x7, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x75c0
movq %rax, %rbx
leaq 0x239ef(%rip), %rsi     # 0x37731
movl $0x2, %edx
movq %rax, %rdi
callq 0x73a0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x75c0
leaq 0x23db9(%rip), %rsi     # 0x37b19
movl $0x5, %edx
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x73a0
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq