.file "tspi.c" .section .text.unlikely,"ax",@progbits .LCOLDB0: .text .LHOTB0: .p2align 4,,15 .globl sqr .type sqr, @function sqr: .LFB2242: .cfi_startproc vmulsd %xmm0, %xmm0, %xmm0 ret .cfi_endproc .LFE2242: .size sqr, .-sqr .section .text.unlikely .LCOLDE0: .text .LHOTE0: .section .text.unlikely .LCOLDB1: .text .LHOTB1: .p2align 4,,15 .globl dist .type dist, @function dist: .LFB2243: .cfi_startproc movslq %edx, %rdx movslq %ecx, %rcx vmovsd (%rdi,%rdx,8), %xmm1 vmovsd (%rsi,%rdx,8), %xmm0 vsubsd (%rdi,%rcx,8), %xmm1, %xmm1 vsubsd (%rsi,%rcx,8), %xmm0, %xmm0 vmulsd %xmm1, %xmm1, %xmm1 vmulsd %xmm0, %xmm0, %xmm0 vaddsd %xmm0, %xmm1, %xmm1 vsqrtsd %xmm1, %xmm0, %xmm0 vucomisd %xmm0, %xmm0 jp .L10 ret .p2align 4,,10 .p2align 3 .L10: vmovapd %xmm1, %xmm0 subq $8, %rsp .cfi_def_cfa_offset 16 call sqrt addq $8, %rsp .cfi_def_cfa_offset 8 ret .cfi_endproc .LFE2243: .size dist, .-dist .section .text.unlikely .LCOLDE1: .text .LHOTE1: .section .text.unlikely .LCOLDB2: .text .LHOTB2: .p2align 4,,15 .globl DistSqrd .type DistSqrd, @function DistSqrd: .LFB2244: .cfi_startproc movslq %esi, %rsi movslq %edx, %rdx salq $4, %rsi salq $4, %rdx addq %rdi, %rsi addq %rdx, %rdi vmovsd (%rsi), %xmm1 vmovsd 8(%rsi), %xmm0 vsubsd (%rdi), %xmm1, %xmm1 vsubsd 8(%rdi), %xmm0, %xmm0 vmulsd %xmm1, %xmm1, %xmm1 vmulsd %xmm0, %xmm0, %xmm0 vaddsd %xmm0, %xmm1, %xmm0 ret .cfi_endproc .LFE2244: .size DistSqrd, .-DistSqrd .section .text.unlikely .LCOLDE2: .text .LHOTE2: .section .text.unlikely .LCOLDB3: .text .LHOTB3: .p2align 4,,15 .globl swap .type swap, @function swap: .LFB2245: .cfi_startproc vmovsd (%rdi), %xmm0 vmovsd (%rsi), %xmm1 vmovsd %xmm1, (%rdi) vmovsd %xmm0, (%rsi) ret .cfi_endproc .LFE2245: .size swap, .-swap .section .text.unlikely .LCOLDE3: .text .LHOTE3: .section .text.unlikely .LCOLDB6: .text .LHOTB6: .p2align 4,,15 .globl tsp .type tsp, @function tsp: .LFB2246: .cfi_startproc movslq %ecx, %rax salq $4, %rax cmpl $1, %ecx leaq -16(%rdi,%rax), %rax vmovsd (%rax), %xmm0 vmovsd %xmm0, (%rsi) vmovsd 8(%rax), %xmm0 vmovsd %xmm0, (%rdx) jle .L63 leal -1(%rcx), %eax leaq 8(%rsp), %r10 .cfi_def_cfa 10, 0 andq $-32, %rsp leaq 8(%rsi), %r9 leaq 40(%rsi), %r8 pushq -8(%r10) movq %rax, %r11 pushq %rbp salq $4, %r11 .cfi_escape 0x10,0x6,0x2,0x76,0 movq %rsp, %rbp addq %rdi, %r11 pushq %r13 cmpl $10, %eax pushq %r12 .cfi_escape 0x10,0xd,0x2,0x76,0x78 .cfi_escape 0x10,0xc,0x2,0x76,0x70 leaq 8(,%rax,8), %r12 pushq %r10 .cfi_escape 0xf,0x3,0x76,0x68,0x6 pushq %rbx .cfi_escape 0x10,0x3,0x2,0x76,0x60 movq %rax, %rbx leaq 40(%rdx), %rax leaq 8(%rdx), %r10 seta %r13b cmpq %rax, %r9 setnb %al cmpq %r8, %r10 setnb %r8b orl %r8d, %eax leaq (%rsi,%r12), %r8 andl %r13d, %eax cmpq %r8, %rdi setnb %r13b cmpq %r11, %r9 setnb %r8b orl %r13d, %r8d testb %r8b, %al je .L15 addq %rdx, %r12 cmpq %r12, %rdi setnb %r8b cmpq %r11, %r10 setnb %al orb %al, %r8b je .L15 leal -5(%rcx), %r11d xorl %eax, %eax xorl %r12d, %r12d shrl $2, %r11d addl $1, %r11d leal 0(,%r11,4), %r8d .L16: vmovupd (%rdi,%rax,2), %xmm0 addl $1, %r12d vmovupd 32(%rdi,%rax,2), %xmm2 vinsertf128 $0x1, 16(%rdi,%rax,2), %ymm0, %ymm0 vinsertf128 $0x1, 48(%rdi,%rax,2), %ymm2, %ymm2 vinsertf128 $1, %xmm2, %ymm0, %ymm1 vperm2f128 $49, %ymm2, %ymm0, %ymm0 vunpcklpd %ymm0, %ymm1, %ymm2 vunpckhpd %ymm0, %ymm1, %ymm0 vmovups %xmm2, 8(%rsi,%rax) vextractf128 $0x1, %ymm2, 24(%rsi,%rax) vmovups %xmm0, 8(%rdx,%rax) vextractf128 $0x1, %ymm0, 24(%rdx,%rax) addq $32, %rax cmpl %r12d, %r11d ja .L16 cmpl %ebx, %r8d leal 1(%r8), %eax je .L21 cltq movq %rax, %r11 salq $4, %r11 leaq -16(%rdi,%r11), %r11 vmovsd (%r11), %xmm0 vmovsd %xmm0, (%rsi,%rax,8) vmovsd 8(%r11), %xmm0 vmovsd %xmm0, (%rdx,%rax,8) leal 2(%r8), %eax cmpl %eax, %ecx jle .L21 cltq movq %rax, %r11 salq $4, %r11 leaq -16(%rdi,%r11), %r11 vmovsd (%r11), %xmm0 vmovsd %xmm0, (%rsi,%rax,8) vmovsd 8(%r11), %xmm0 vmovsd %xmm0, (%rdx,%rax,8) leal 3(%r8), %eax cmpl %eax, %ecx jle .L21 cltq movq %rax, %r8 salq $4, %r8 leaq -16(%rdi,%r8), %rdi vmovsd (%rdi), %xmm0 vmovsd %xmm0, (%rsi,%rax,8) vmovsd 8(%rdi), %xmm0 vmovsd %xmm0, (%rdx,%rax,8) .L21: vmovsd .LC4(%rip), %xmm6 movl $1, %r11d vmovapd .LC5(%rip), %ymm5 .p2align 4,,10 .p2align 3 .L42: testb $3, %r11b vmovsd -8(%r9), %xmm3 vmovsd -8(%r10), %xmm4 movl %ebx, %r8d jne .L22 cmpl $7, %ebx jg .L46 movl %ecx, %eax .L23: cmpl %r11d, %eax jle .L46 .L65: vmovapd %xmm6, %xmm2 movl %r11d, %r12d movl %r11d, %edi xorl %r8d, %r8d .p2align 4,,10 .p2align 3 .L31: vmovsd (%r9,%r8), %xmm1 vmovsd (%r10,%r8), %xmm0 vsubsd %xmm3, %xmm1, %xmm1 vsubsd %xmm4, %xmm0, %xmm0 vmulsd %xmm1, %xmm1, %xmm1 vmulsd %xmm0, %xmm0, %xmm0 vaddsd %xmm0, %xmm1, %xmm0 vucomisd %xmm0, %xmm2 vcmplesd %xmm2, %xmm0, %xmm1 vandpd %xmm1, %xmm0, %xmm0 vandnpd %xmm2, %xmm1, %xmm2 cmovnb %r12d, %edi addl $1, %r12d addq $8, %r8 cmpl %eax, %r12d vorpd %xmm0, %xmm2, %xmm2 jne .L31 movl %ecx, %r8d subl %eax, %r8d .L24: leal 3(%r8), %r12d testl %r8d, %r8d cmovs %r12d, %r8d sarl $2, %r8d testl %r8d, %r8d jle .L32 vxorpd %xmm7, %xmm7, %xmm7 movslq %eax, %r12 vxorpd %xmm10, %xmm10, %xmm10 salq $3, %r12 vxorpd %xmm0, %xmm0, %xmm0 leaq (%rsi,%r12), %r13 addq %rdx, %r12 vcvtsi2sd %edi, %xmm7, %xmm7 leal 1(%rax), %edi vxorpd %xmm1, %xmm1, %xmm1 vxorpd %xmm11, %xmm11, %xmm11 vcvtsi2sd %edi, %xmm10, %xmm10 leal 2(%rax), %edi vmovddup %xmm3, %xmm9 vcvtsi2sd %eax, %xmm1, %xmm1 vmovddup %xmm4, %xmm8 vcvtsi2sd %edi, %xmm0, %xmm0 leal 3(%rax), %edi vmovddup %xmm2, %xmm2 vmovddup %xmm7, %xmm7 leal (%rax,%r8,4), %eax vcvtsi2sd %edi, %xmm11, %xmm11 vunpcklpd %xmm10, %xmm1, %xmm10 subl $1, %r8d vunpcklpd %xmm11, %xmm0, %xmm0 addq $1, %r8 vinsertf128 $1, %xmm9, %ymm9, %ymm9 salq $5, %r8 vinsertf128 $1, %xmm8, %ymm8, %ymm8 xorl %edi, %edi vinsertf128 $1, %xmm2, %ymm2, %ymm2 vinsertf128 $1, %xmm7, %ymm7, %ymm7 vinsertf128 $0x1, %xmm0, %ymm10, %ymm10 .p2align 4,,10 .p2align 3 .L33: vmovapd 0(%r13,%rdi), %ymm1 vmovapd (%r12,%rdi), %ymm0 addq $32, %rdi vsubpd %ymm9, %ymm1, %ymm1 cmpq %r8, %rdi vsubpd %ymm8, %ymm0, %ymm0 vmulpd %ymm1, %ymm1, %ymm1 vmulpd %ymm0, %ymm0, %ymm0 vaddpd %ymm0, %ymm1, %ymm0 vcmppd $18, %ymm2, %ymm0, %ymm1 vblendvpd %ymm1, %ymm10, %ymm7, %ymm7 vblendvpd %ymm1, %ymm0, %ymm2, %ymm2 vaddpd %ymm5, %ymm10, %ymm10 jne .L33 vperm2f128 $1, %ymm2, %ymm2, %ymm0 vperm2f128 $1, %ymm7, %ymm7, %ymm1 vcmppd $18, %ymm0, %ymm2, %ymm8 vblendvpd %ymm8, %ymm2, %ymm0, %ymm2 vblendvpd %ymm8, %ymm7, %ymm1, %ymm7 vpermilpd $1, %ymm2, %ymm1 vpermilpd $1, %ymm7, %ymm8 vcmppd $18, %ymm1, %ymm2, %ymm0 vblendvpd %ymm0, %ymm2, %ymm1, %ymm2 vblendvpd %ymm0, %ymm7, %ymm8, %ymm7 vmovapd %ymm2, -80(%rbp) vmovapd %ymm7, -112(%rbp) vmovsd -80(%rbp), %xmm2 vcvttsd2si -112(%rbp), %edi .L32: cmpl %eax, %ecx jle .L34 movslq %eax, %r12 xorl %r8d, %r8d salq $3, %r12 leaq (%rsi,%r12), %r13 addq %rdx, %r12 .p2align 4,,10 .p2align 3 .L41: vmovsd 0(%r13,%r8), %xmm1 vmovsd (%r12,%r8), %xmm0 vsubsd %xmm3, %xmm1, %xmm1 vsubsd %xmm4, %xmm0, %xmm0 vmulsd %xmm1, %xmm1, %xmm1 vmulsd %xmm0, %xmm0, %xmm0 vaddsd %xmm0, %xmm1, %xmm0 vucomisd %xmm0, %xmm2 vcmplesd %xmm2, %xmm0, %xmm1 vandpd %xmm1, %xmm0, %xmm0 vandnpd %xmm2, %xmm1, %xmm2 cmovnb %eax, %edi addl $1, %eax addq $8, %r8 cmpl %ecx, %eax vorpd %xmm0, %xmm2, %xmm2 jne .L41 .L34: movslq %edi, %rdi vmovsd (%r9), %xmm0 salq $3, %rdi addl $1, %r11d addq $8, %r9 leaq (%rsi,%rdi), %rax addq %rdx, %rdi addq $8, %r10 subl $1, %ebx vmovsd (%rax), %xmm1 vmovsd %xmm1, -8(%r9) vmovsd %xmm0, (%rax) vmovsd (%rdi), %xmm1 vmovsd -8(%r10), %xmm0 vmovsd %xmm1, -8(%r10) cmpl %ecx, %r11d vmovsd %xmm0, (%rdi) jne .L42 vzeroupper popq %rbx .cfi_restore 3 popq %r10 .cfi_restore 10 .cfi_def_cfa 10, 0 popq %r12 .cfi_restore 12 popq %r13 .cfi_restore 13 popq %rbp .cfi_restore 6 leaq -8(%r10), %rsp .cfi_def_cfa 7, 8 .L63: rep ret .p2align 4,,10 .p2align 3 .L22: .cfi_escape 0xf,0x3,0x76,0x68,0x6 .cfi_escape 0x10,0x3,0x2,0x76,0x60 .cfi_escape 0x10,0x6,0x2,0x76,0 .cfi_escape 0x10,0xc,0x2,0x76,0x70 .cfi_escape 0x10,0xd,0x2,0x76,0x78 cmpl $7, %ebx movl %ecx, %eax jle .L23 leal 4(%r11), %eax andl $-4, %eax cmpl %r11d, %eax jg .L65 .p2align 4,,10 .p2align 3 .L46: movl %r11d, %eax movl %r11d, %edi vmovapd %xmm6, %xmm2 jmp .L24 .L15: leal -2(%rcx), %eax leaq 8(,%rax,8), %r8 xorl %eax, %eax .p2align 4,,10 .p2align 3 .L20: vmovsd (%rdi,%rax,2), %xmm0 vmovsd %xmm0, 8(%rsi,%rax) vmovsd 8(%rdi,%rax,2), %xmm0 vmovsd %xmm0, 8(%rdx,%rax) addq $8, %rax cmpq %r8, %rax jne .L20 jmp .L21 .cfi_endproc .LFE2246: .size tsp, .-tsp .section .text.unlikely .LCOLDE6: .text .LHOTE6: .section .rodata.str1.1,"aMS",@progbits,1 .LC8: .string "usage: %s " .LC9: .string "w" .LC10: .string "tsp.eps" .section .rodata.str1.8,"aMS",@progbits,1 .align 8 .LC11: .string "%%!PS-Adobe-2.0 EPSF-1.2\n%%%%BoundingBox: 0 0 300 300\n" .section .rodata.str1.1 .LC12: .string "1 setlinejoin\n0 setlinewidth\n" .LC14: .string "%f %f moveto\n" .LC16: .string "%f %f lineto\n" .LC17: .string "stroke\n" .LC18: .string "sumdist = %f\n" .section .text.unlikely .LCOLDB19: .section .text.startup,"ax",@progbits .LHOTB19: .p2align 4,,15 .globl main .type main, @function main: .LFB2247: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 pushq %r15 pushq %r14 pushq %r13 pushq %r12 pushq %rbx subq $24, %rsp .cfi_offset 15, -24 .cfi_offset 14, -32 .cfi_offset 13, -40 .cfi_offset 12, -48 .cfi_offset 3, -56 cmpl $2, %edi je .L67 movq (%rsi), %rdx movq stderr(%rip), %rdi movl $.LC8, %esi xorl %eax, %eax call fprintf movl $1, %edi call exit .L67: movq 8(%rsi), %rdi movl $10, %edx xorl %esi, %esi call strtol movq %rax, %r13 cltq salq $4, %rax addq $32, %rax subq %rax, %rsp leal 4(%r13), %eax leaq 31(%rsp), %r15 cltq salq $3, %rax andq $-32, %r15 leaq 46(%rax), %rdx addq $14, %rax movq %r15, -56(%rbp) andq $-16, %rax andq $-16, %rdx subq %rdx, %rsp leaq 31(%rsp), %rbx subq %rax, %rsp leaq 31(%rsp), %r12 andq $-32, %rbx leaq 32(%rbx), %rcx andq $-32, %r12 testl %r13d, %r13d movq %rcx, -64(%rbp) jle .L85 movq -56(%rbp), %rcx leal -1(%r13), %eax salq $4, %rax leaq 8(%rcx), %r15 leaq 24(%rcx,%rax), %r14 .p2align 4,,10 .p2align 3 .L72: call random vxorpd %xmm0, %xmm0, %xmm0 addq $16, %r15 vcvtsi2sdq %rax, %xmm0, %xmm0 vmulsd .LC15(%rip), %xmm0, %xmm0 vmovsd %xmm0, -24(%r15) call random vxorpd %xmm0, %xmm0, %xmm0 vcvtsi2sdq %rax, %xmm0, %xmm0 vmulsd .LC15(%rip), %xmm0, %xmm0 vmovsd %xmm0, -16(%r15) cmpq %r14, %r15 jne .L72 movq -64(%rbp), %rsi movq -56(%rbp), %rdi movl %r13d, %ecx movq %r12, %rdx call tsp movl $.LC9, %esi movl $.LC10, %edi call fopen movl $.LC11, %esi movq %rax, %r15 movq %rax, %rdi xorl %eax, %eax call fprintf movq %r15, %rcx movl $29, %edx movl $1, %esi movl $.LC12, %edi call fwrite vmovsd .LC13(%rip), %xmm6 movl $.LC14, %esi movq %r15, %rdi movl $2, %eax vmulsd 32(%rbx), %xmm6, %xmm0 vmulsd (%r12), %xmm6, %xmm1 call fprintf cmpl $1, %r13d jle .L82 vxorpd %xmm6, %xmm6, %xmm6 subl $2, %r13d xorl %r14d, %r14d addq $1, %r13 vmovsd %xmm6, -56(%rbp) .p2align 4,,10 .p2align 3 .L76: vmovsd .LC13(%rip), %xmm2 movl $.LC16, %esi movq %r15, %rdi movl $2, %eax vmulsd 40(%rbx,%r14,8), %xmm2, %xmm0 vmulsd 8(%r12,%r14,8), %xmm2, %xmm1 call fprintf vmovsd 32(%rbx,%r14,8), %xmm1 vmovsd (%r12,%r14,8), %xmm0 vsubsd 40(%rbx,%r14,8), %xmm1, %xmm1 vsubsd 8(%r12,%r14,8), %xmm0, %xmm0 vmulsd %xmm1, %xmm1, %xmm1 vmulsd %xmm0, %xmm0, %xmm0 vaddsd %xmm0, %xmm1, %xmm1 vsqrtsd %xmm1, %xmm0, %xmm0 vucomisd %xmm0, %xmm0 jp .L86 .L74: vaddsd -56(%rbp), %xmm0, %xmm4 addq $1, %r14 cmpq %r13, %r14 vmovsd %xmm4, -56(%rbp) jne .L76 .L71: movq %r15, %rcx movl $7, %edx movl $1, %esi movl $.LC17, %edi call fwrite vmovsd -56(%rbp), %xmm0 movl $.LC18, %edi movl $1, %eax call printf xorl %edi, %edi call exit .L86: vmovapd %xmm1, %xmm0 call sqrt jmp .L74 .L85: movq -64(%rbp), %rsi movq -56(%rbp), %rdi movl %r13d, %ecx movq %r12, %rdx call tsp movl $.LC9, %esi movl $.LC10, %edi call fopen movl $.LC11, %esi movq %rax, %r15 movq %rax, %rdi xorl %eax, %eax call fprintf movl $1, %esi movl $.LC12, %edi movq %r15, %rcx movl $29, %edx call fwrite vmovsd .LC13(%rip), %xmm1 movl $.LC14, %esi movq %r15, %rdi movl $2, %eax vmulsd 32(%rbx), %xmm1, %xmm0 vmulsd (%r12), %xmm1, %xmm1 call fprintf .L82: vxorpd %xmm7, %xmm7, %xmm7 vmovsd %xmm7, -56(%rbp) jmp .L71 .cfi_endproc .LFE2247: .size main, .-main .section .text.unlikely .LCOLDE19: .section .text.startup .LHOTE19: .section .rodata.cst8,"aM",@progbits,8 .align 8 .LC4: .long 4294967295 .long 2146435071 .section .rodata.cst32,"aM",@progbits,32 .align 32 .LC5: .long 0 .long 1074790400 .long 0 .long 1074790400 .long 0 .long 1074790400 .long 0 .long 1074790400 .section .rodata.cst8 .align 8 .LC13: .long 0 .long 1081262080 .align 8 .LC15: .long 0 .long 1040187392 .ident "GCC: (Debian 4.9.2-10) 4.9.2" .section .note.GNU-stack,"",@progbits