// File: /workspace/github_c_makefile_star2_O0/mmcco[P]sljit/test_src/sljitTest.c
// Function: test14
static void test14(void)
{
	/* Test fpu diadic functions. */
	executable_code code;
	struct sljit_compiler* compiler = sljit_create_compiler();
	double buf[15];

	if (verbose)
		printf("Run test14\n");

	if (!sljit_is_fpu_available()) {
		if (verbose)
			printf("no fpu available, test14 skipped\n");
		successful_tests++;
		if (compiler)
			sljit_free_compiler(compiler);
		return;
	}
	buf[0] = 7.25;
	buf[1] = 3.5;
	buf[2] = 1.75;
	buf[3] = 0.0;
	buf[4] = 0.0;
	buf[5] = 0.0;
	buf[6] = 0.0;
	buf[7] = 0.0;
	buf[8] = 0.0;
	buf[9] = 0.0;
	buf[10] = 0.0;
	buf[11] = 0.0;
	buf[12] = 8.0;
	buf[13] = 4.0;
	buf[14] = 0.0;

	FAILED(!compiler, "cannot create compiler\n");
	sljit_emit_enter(compiler, 0, 1, 3, 1, 6, 0, 0);

	/* ADD */
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R0, 0, SLJIT_IMM, sizeof(double));
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR0, 0, SLJIT_MEM1(SLJIT_S0), sizeof(double));
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR1, 0, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 2);
	sljit_emit_fop2(compiler, SLJIT_DADD, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 3, SLJIT_MEM2(SLJIT_S0, SLJIT_R0), 0, SLJIT_MEM1(SLJIT_S0), 0);
	sljit_emit_fop2(compiler, SLJIT_DADD, SLJIT_FR0, 0, SLJIT_FR0, 0, SLJIT_FR1, 0);
	sljit_emit_fop2(compiler, SLJIT_DADD, SLJIT_FR1, 0, SLJIT_FR0, 0, SLJIT_FR1, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 4, SLJIT_FR0, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 5, SLJIT_FR1, 0);

	/* SUB */
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR2, 0, SLJIT_MEM1(SLJIT_S0), 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR3, 0, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 2);
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R1, 0, SLJIT_IMM, 2);
	sljit_emit_fop2(compiler, SLJIT_DSUB, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 6, SLJIT_FR3, 0, SLJIT_MEM2(SLJIT_S0, SLJIT_R1), SLJIT_DOUBLE_SHIFT);
	sljit_emit_fop2(compiler, SLJIT_DSUB, SLJIT_FR2, 0, SLJIT_FR2, 0, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 2);
	sljit_emit_fop2(compiler, SLJIT_DSUB, SLJIT_FR3, 0, SLJIT_FR2, 0, SLJIT_FR3, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 7, SLJIT_FR2, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 8, SLJIT_FR3, 0);

	/* MUL */
	sljit_emit_op1(compiler, SLJIT_MOV, SLJIT_R1, 0, SLJIT_IMM, 1);
	sljit_emit_fop2(compiler, SLJIT_DMUL, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 9, SLJIT_MEM2(SLJIT_S0, SLJIT_R1), SLJIT_DOUBLE_SHIFT, SLJIT_FR1, 0);
	sljit_emit_fop2(compiler, SLJIT_DMUL, SLJIT_FR1, 0, SLJIT_FR1, 0, SLJIT_FR2, 0);
	sljit_emit_fop2(compiler, SLJIT_DMUL, SLJIT_FR5, 0, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 2, SLJIT_FR2, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 10, SLJIT_FR1, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 11, SLJIT_FR5, 0);

	/* DIV */
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR5, 0, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 12);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR1, 0, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 13);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_FR4, 0, SLJIT_FR5, 0);
	sljit_emit_fop2(compiler, SLJIT_DDIV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 12, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 12, SLJIT_FR1, 0);
	sljit_emit_fop2(compiler, SLJIT_DDIV, SLJIT_FR5, 0, SLJIT_FR5, 0, SLJIT_FR1, 0);
	sljit_emit_fop2(compiler, SLJIT_DDIV, SLJIT_FR4, 0, SLJIT_FR1, 0, SLJIT_FR4, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 13, SLJIT_FR5, 0);
	sljit_emit_fop1(compiler, SLJIT_DMOV, SLJIT_MEM1(SLJIT_S0), sizeof(double) * 14, SLJIT_FR4, 0);

	sljit_emit_return(compiler, SLJIT_UNUSED, 0, 0);

	code.code = sljit_generate_code(compiler);
	CHECK(compiler);
	sljit_free_compiler(compiler);

	code.func1((long)&buf);
	FAILED(buf[3] != 10.75, "test14 case 1 failed\n");
	FAILED(buf[4] != 5.25, "test14 case 2 failed\n");
	FAILED(buf[5] != 7.0, "test14 case 3 failed\n");
	FAILED(buf[6] != 0.0, "test14 case 4 failed\n");
	FAILED(buf[7] != 5.5, "test14 case 5 failed\n");
	FAILED(buf[8] != 3.75, "test14 case 6 failed\n");
	FAILED(buf[9] != 24.5, "test14 case 7 failed\n");
	FAILED(buf[10] != 38.5, "test14 case 8 failed\n");
	FAILED(buf[11] != 9.625, "test14 case 9 failed\n");
	FAILED(buf[12] != 2.0, "test14 case 10 failed\n");
	FAILED(buf[13] != 2.0, "test14 case 11 failed\n");
	FAILED(buf[14] != 0.5, "test14 case 12 failed\n");

	sljit_free_code(code.code);
	successful_tests++;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
callq 0x18ba0
movq %rax, -0x10(%rbp)
cmpl $0x0, 0x2d2f9(%rip)     # 0x34354
je 0x706b
leaq 0x26ce5(%rip), %rdi     # 0x2dd49
movb $0x0, %al
callq 0x2070
callq 0x23a30
testb $0x1, %al
jne 0x70af
cmpl $0x0, 0x2d2d9(%rip)     # 0x34354
je 0x708b
leaq 0x26cd1(%rip), %rdi     # 0x2dd55
movb $0x0, %al
callq 0x2070
movl 0x2d2cb(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x2d2c2(%rip)     # 0x3435c
cmpq $0x0, -0x10(%rbp)
je 0x70aa
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x78bb
movsd 0x26029(%rip), %xmm0    # 0x2d0e0
movsd %xmm0, -0x90(%rbp)
movsd 0x26011(%rip), %xmm0    # 0x2d0d8
movsd %xmm0, -0x88(%rbp)
movsd 0x25ff9(%rip), %xmm0    # 0x2d0d0
movsd %xmm0, -0x80(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x70(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x68(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x48(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x25f9c(%rip), %xmm0    # 0x2d0c8
movsd %xmm0, -0x30(%rbp)
movsd 0x25f87(%rip), %xmm0    # 0x2d0c0
movsd %xmm0, -0x28(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x7160
leaq 0x2627f(%rip), %rdi     # 0x2d3d3
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x1, %r8d
movl $0x3, %ecx
movl $0x6, %r9d
movl %r8d, %edx
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
callq 0x19b20
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x8, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x1, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x8, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x10, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0xa0, %esi
movl $0x8c, %edx
movl $0x18, %ecx
movl $0x18c, %r8d            # imm = 0x18C
xorl %eax, %eax
movl %eax, %r9d
movl $0x8c, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa0, %esi
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x2, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa0, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %r8d
movq %r9, %rcx
movl $0x2, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x20, %ecx
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x28, %ecx
movl $0x2, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x3, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x8c, %r8d
movq %r9, %rcx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x4, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x10, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x2, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0xa1, %esi
movl $0x8c, %edx
movl $0x30, %ecx
movl $0x4, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl $0x28c, (%rsp)          # imm = 0x28C
movq $0x3, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa1, %esi
movl $0x3, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x8c, (%rsp)
movq $0x10, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa1, %esi
movl $0x4, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x3, %r8d
movq %r9, %rcx
movl $0x4, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x38, %ecx
movl $0x3, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x40, %ecx
movl $0x4, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x20, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x40, %r8d
movl $0x1, %r9d
callq 0x1d3d0
movq -0x10(%rbp), %rdi
movl $0xa2, %esi
movl $0x8c, %edx
movl $0x48, %ecx
movl $0x28c, %r8d            # imm = 0x28C
movl $0x3, %r9d
xorl %eax, %eax
movl $0x2, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa2, %esi
movl $0x2, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x3, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa2, %esi
movl $0x6, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x10, %r9d
movl $0x3, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x50, %ecx
movl $0x2, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x58, %ecx
movl $0x6, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x6, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x60, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x2, %edx
xorl %eax, %eax
movl %eax, %ecx
movl $0x8c, %r8d
movl $0x68, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x5, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x6, %r8d
movq %r9, %rcx
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0xa3, %esi
movl $0x8c, %r8d
movl $0x60, %r9d
xorl %eax, %eax
movl %r8d, %edx
movq %r9, %rcx
movl $0x2, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa3, %esi
movl $0x6, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movq %r9, %rcx
movl $0x2, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0xa3, %esi
movl $0x5, %edx
xorl %eax, %eax
movl %eax, %r9d
movl $0x2, %r8d
movq %r9, %rcx
movl $0x5, (%rsp)
movq $0x0, 0x8(%rsp)
callq 0x26fb0
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x68, %ecx
movl $0x6, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
movl $0x80, %esi
movl $0x8c, %edx
movl $0x70, %ecx
movl $0x5, %r8d
xorl %eax, %eax
movl %eax, %r9d
callq 0x23a40
movq -0x10(%rbp), %rdi
xorl %edx, %edx
xorl %eax, %eax
movl %eax, %ecx
movl %edx, %esi
callq 0x1a7c0
movq -0x10(%rbp), %rdi
callq 0x19070
movq %rax, -0x8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x18030
cmpl $0x1, %eax
je 0x76a3
movq -0x10(%rbp), %rdi
callq 0x18030
movl %eax, %esi
leaq 0x25d8a(%rip), %rdi     # 0x2d418
movb $0x0, %al
callq 0x2070
movq -0x10(%rbp), %rdi
callq 0x18d90
jmp 0x78bb
movq -0x10(%rbp), %rdi
callq 0x18d90
movq -0x8(%rbp), %rax
leaq -0x90(%rbp), %rdi
callq *%rax
movsd -0x78(%rbp), %xmm0
movsd 0x25a22(%rip), %xmm1    # 0x2d0e8
ucomisd %xmm1, %xmm0
jne 0x76d0
jp 0x76d0
jmp 0x76e3
leaq 0x266a0(%rip), %rdi     # 0x2dd77
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x70(%rbp), %xmm0
movsd 0x25a00(%rip), %xmm1    # 0x2d0f0
ucomisd %xmm1, %xmm0
jne 0x76fa
jp 0x76fa
jmp 0x770d
leaq 0x2668c(%rip), %rdi     # 0x2dd8d
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x68(%rbp), %xmm0
movsd 0x259de(%rip), %xmm1    # 0x2d0f8
ucomisd %xmm1, %xmm0
jne 0x7724
jp 0x7724
jmp 0x7737
leaq 0x26678(%rip), %rdi     # 0x2dda3
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x7749
jp 0x7749
jmp 0x775c
leaq 0x26669(%rip), %rdi     # 0x2ddb9
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x58(%rbp), %xmm0
movsd 0x25997(%rip), %xmm1    # 0x2d100
ucomisd %xmm1, %xmm0
jne 0x7773
jp 0x7773
jmp 0x7786
leaq 0x26655(%rip), %rdi     # 0x2ddcf
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x50(%rbp), %xmm0
movsd 0x25975(%rip), %xmm1    # 0x2d108
ucomisd %xmm1, %xmm0
jne 0x779d
jp 0x779d
jmp 0x77b0
leaq 0x26641(%rip), %rdi     # 0x2dde5
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x48(%rbp), %xmm0
movsd 0x25953(%rip), %xmm1    # 0x2d110
ucomisd %xmm1, %xmm0
jne 0x77c7
jp 0x77c7
jmp 0x77da
leaq 0x2662d(%rip), %rdi     # 0x2ddfb
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x40(%rbp), %xmm0
movsd 0x25931(%rip), %xmm1    # 0x2d118
ucomisd %xmm1, %xmm0
jne 0x77f1
jp 0x77f1
jmp 0x7804
leaq 0x26619(%rip), %rdi     # 0x2de11
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x38(%rbp), %xmm0
movsd 0x2590f(%rip), %xmm1    # 0x2d120
ucomisd %xmm1, %xmm0
jne 0x781b
jp 0x781b
jmp 0x782e
leaq 0x26605(%rip), %rdi     # 0x2de27
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x30(%rbp), %xmm0
movsd 0x258ed(%rip), %xmm1    # 0x2d128
ucomisd %xmm1, %xmm0
jne 0x7845
jp 0x7845
jmp 0x7855
leaq 0x265f1(%rip), %rdi     # 0x2de3d
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x28(%rbp), %xmm0
movsd 0x258c6(%rip), %xmm1    # 0x2d128
ucomisd %xmm1, %xmm0
jne 0x786c
jp 0x786c
jmp 0x787c
leaq 0x265e1(%rip), %rdi     # 0x2de54
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movsd -0x20(%rbp), %xmm0
movsd 0x258a7(%rip), %xmm1    # 0x2d130
ucomisd %xmm1, %xmm0
jne 0x7893
jp 0x7893
jmp 0x78a3
leaq 0x265d1(%rip), %rdi     # 0x2de6b
movb $0x0, %al
callq 0x2070
jmp 0x78bb
movq -0x8(%rbp), %rdi
callq 0x18e10
movl 0x2caaa(%rip), %eax     # 0x3435c
addl $0x1, %eax
movl %eax, 0x2caa1(%rip)     # 0x3435c
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)