.file "tspe1.c" .section .text.unlikely,"ax",@progbits .LCOLDB0: .text .LHOTB0: .p2align 4,,15 .globl sqr .type sqr, @function sqr: .LFB24: .cfi_startproc vmulsd %xmm0, %xmm0, %xmm0 ret .cfi_endproc .LFE24: .size sqr, .-sqr .section .text.unlikely .LCOLDE0: .text .LHOTE0: .section .text.unlikely .LCOLDB1: .text .LHOTB1: .p2align 4,,15 .globl dist .type dist, @function dist: .LFB25: .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 .LFE25: .size dist, .-dist .section .text.unlikely .LCOLDE1: .text .LHOTE1: .section .text.unlikely .LCOLDB2: .text .LHOTB2: .p2align 4,,15 .globl DistSqrd .type DistSqrd, @function DistSqrd: .LFB26: .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 .LFE26: .size DistSqrd, .-DistSqrd .section .text.unlikely .LCOLDE2: .text .LHOTE2: .section .text.unlikely .LCOLDB3: .text .LHOTB3: .p2align 4,,15 .globl swap .type swap, @function swap: .LFB27: .cfi_startproc vmovsd (%rdi), %xmm0 vmovsd (%rsi), %xmm1 vmovsd %xmm1, (%rdi) vmovsd %xmm0, (%rsi) ret .cfi_endproc .LFE27: .size swap, .-swap .section .text.unlikely .LCOLDE3: .text .LHOTE3: .section .text.unlikely .LCOLDB5: .text .LHOTB5: .p2align 4,,15 .globl tsp .type tsp, @function tsp: .LFB28: .cfi_startproc cmpl $1, %ecx jle .L14 leaq 8(%rsp), %r10 .cfi_def_cfa 10, 0 leal -1(%rcx), %r9d andq $-32, %rsp leaq 8(%rsi), %r8 leaq 40(%rdx), %r11 pushq -8(%r10) movq %r9, %rax pushq %rbp salq $4, %rax .cfi_escape 0x10,0x6,0x2,0x76,0 movq %rsp, %rbp addq %rdi, %rax pushq %r13 cmpq %r11, %r8 pushq %r12 leaq 40(%rsi), %r11 pushq %r10 .cfi_escape 0xf,0x3,0x76,0x68,0x6 .cfi_escape 0x10,0xd,0x2,0x76,0x78 .cfi_escape 0x10,0xc,0x2,0x76,0x70 leaq 8(,%r9,8), %r10 pushq %rbx .cfi_escape 0x10,0x3,0x2,0x76,0x60 movq %r9, %rbx leaq 8(%rdx), %r9 setnb %r12b cmpq %r11, %r9 setnb %r11b orl %r11d, %r12d cmpl $10, %ebx seta %r11b andl %r11d, %r12d leaq (%rsi,%r10), %r11 cmpq %r11, %rdi setnb %r13b cmpq %rax, %r8 setnb %r11b orl %r13d, %r11d testb %r11b, %r12b je .L15 addq %rdx, %r10 cmpq %r10, %rdi setnb %r10b cmpq %rax, %r9 setnb %al orb %al, %r10b je .L15 leal -5(%rcx), %r11d xorl %eax, %eax xorl %r12d, %r12d shrl $2, %r11d addl $1, %r11d leal 0(,%r11,4), %r10d .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 %r11d, %r12d jb .L16 cmpl %r10d, %ebx leal 1(%r10), %eax je .L45 cltq movq %rax, %r11 salq $4, %r11 leaq -16(%rdi,%r11), %r11 vmovsd (%r11), %xmm1 vmovsd 8(%r11), %xmm0 vmovsd %xmm1, (%rsi,%rax,8) vmovsd %xmm0, (%rdx,%rax,8) leal 2(%r10), %eax cmpl %eax, %ecx jle .L45 cltq movq %rax, %r11 salq $4, %r11 leaq -16(%rdi,%r11), %r11 vmovsd (%r11), %xmm1 vmovsd 8(%r11), %xmm0 vmovsd %xmm1, (%rsi,%rax,8) vmovsd %xmm0, (%rdx,%rax,8) leal 3(%r10), %eax cmpl %eax, %ecx jle .L45 cltq movq %rax, %r10 salq $4, %r10 leaq -16(%rdi,%r10), %r10 vmovsd (%r10), %xmm1 vmovsd 8(%r10), %xmm0 leal -2(%rcx), %r10d vmovsd %xmm1, (%rsi,%rax,8) vmovsd %xmm0, (%rdx,%rax,8) vzeroupper .L21: movslq %ecx, %rcx leaq 16(,%r10,8), %r10 movq %rcx, %rax leaq (%rsi,%rcx,8), %r11 salq $4, %rax vmovsd .LC4(%rip), %xmm8 leaq -16(%rdi,%rax), %rax addq %rsi, %r10 movq %rsi, %rdi vmovsd (%rax), %xmm0 vmovsd %xmm0, (%rsi) vmovsd 8(%rax), %xmm0 vmovsd %xmm0, (%rdx) .p2align 4,,10 .p2align 3 .L25: vmovsd -8(%r8), %xmm3 vmovapd %xmm8, %xmm2 vmovsd -8(%r9), %xmm7 movq %r11, %rax .p2align 4,,10 .p2align 3 .L22: #APP # 55 "tspe1.c" 1 vbroadcastsd %xmm2, %ymm4 vbroadcastsd %xmm3, %ymm6 Linner: vsubpd -32(%rax), %ymm6, %ymm5 subq $32, %rax vmulpd %ymm5, %ymm5, %ymm5 vcmpltpd %ymm4, %ymm5, %ymm5 vpmovmskb %ymm5, %rcx test %rcx, %rcx je Linner bsr %rcx, %rcx leaq -7(%rax,%rcx), %rax # 0 "" 2 #NO_APP movq %rax, %rcx vmovsd (%rax), %xmm0 subq %rdi, %rcx vmovsd (%rdx,%rcx), %xmm1 vsubsd %xmm3, %xmm0, %xmm0 vsubsd %xmm7, %xmm1, %xmm1 vmulsd %xmm0, %xmm0, %xmm0 vmulsd %xmm1, %xmm1, %xmm1 vaddsd %xmm1, %xmm0, %xmm0 vucomisd %xmm0, %xmm2 jb .L22 cmpq %r8, %rax jb .L48 vmovapd %xmm0, %xmm2 movq %rax, %rsi jmp .L22 .p2align 4,,10 .p2align 3 .L48: vmovsd (%r8), %xmm0 movq %rsi, %rax vmovsd (%rsi), %xmm1 subq %rdi, %rax addq %rdx, %rax addq $8, %r8 addq $8, %r9 vmovsd %xmm1, -8(%r8) vmovsd %xmm0, (%rsi) vmovsd (%rax), %xmm1 vmovsd -8(%r9), %xmm0 vmovsd %xmm1, -8(%r9) cmpq %r10, %r8 vmovsd %xmm0, (%rax) jne .L25 popq %rbx .cfi_remember_state .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 ret .L45: .cfi_restore_state leal -2(%rcx), %r10d vzeroupper jmp .L21 .L15: leal -2(%rcx), %eax movq %rax, %r10 leaq 8(,%rax,8), %r11 xorl %eax, %eax .L20: vmovsd (%rdi,%rax,2), %xmm1 vmovsd 8(%rdi,%rax,2), %xmm0 vmovsd %xmm1, 8(%rsi,%rax) vmovsd %xmm0, 8(%rdx,%rax) addq $8, %rax cmpq %r11, %rax jne .L20 jmp .L21 .L14: .cfi_def_cfa 7, 8 .cfi_restore 3 .cfi_restore 6 .cfi_restore 12 .cfi_restore 13 movslq %ecx, %rax salq $4, %rax leaq -16(%rdi,%rax), %rax vmovsd (%rax), %xmm0 vmovsd %xmm0, (%rsi) vmovsd 8(%rax), %xmm0 vmovsd %xmm0, (%rdx) ret .cfi_endproc .LFE28: .size tsp, .-tsp .section .text.unlikely .LCOLDE5: .text .LHOTE5: .section .rodata.str1.1,"aMS",@progbits,1 .LC7: .string "usage: %s " .LC8: .string "w" .LC9: .string "tsp.eps" .section .rodata.str1.8,"aMS",@progbits,1 .align 8 .LC10: .string "%%!PS-Adobe-2.0 EPSF-1.2\n%%%%BoundingBox: 0 0 300 300\n" .section .rodata.str1.1 .LC11: .string "1 setlinejoin\n0 setlinewidth\n" .LC13: .string "%f %f moveto\n" .LC15: .string "%f %f lineto\n" .LC16: .string "stroke\n" .LC17: .string "sumdist = %f\n" .section .text.unlikely .LCOLDB18: .section .text.startup,"ax",@progbits .LHOTB18: .p2align 4,,15 .globl main .type main, @function main: .LFB29: .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 .L50 movq (%rsi), %rdx movq stderr(%rip), %rdi movl $.LC7, %esi xorl %eax, %eax call fprintf movl $1, %edi call exit .L50: 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 .L68 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 .L55: call random vxorpd %xmm0, %xmm0, %xmm0 addq $16, %r15 vcvtsi2sdq %rax, %xmm0, %xmm0 vmulsd .LC14(%rip), %xmm0, %xmm0 vmovsd %xmm0, -24(%r15) call random vxorpd %xmm0, %xmm0, %xmm0 vcvtsi2sdq %rax, %xmm0, %xmm0 vmulsd .LC14(%rip), %xmm0, %xmm0 vmovsd %xmm0, -16(%r15) cmpq %r14, %r15 jne .L55 movq -64(%rbp), %rsi movq -56(%rbp), %rdi movl %r13d, %ecx movq %r12, %rdx call tsp movl $.LC8, %esi movl $.LC9, %edi call fopen movl $.LC10, %esi movq %rax, %r15 movq %rax, %rdi xorl %eax, %eax call fprintf movq %r15, %rcx movl $29, %edx movl $1, %esi movl $.LC11, %edi call fwrite vmovsd .LC12(%rip), %xmm6 movl $.LC13, %esi movq %r15, %rdi movl $2, %eax vmulsd 32(%rbx), %xmm6, %xmm0 vmulsd (%r12), %xmm6, %xmm1 call fprintf cmpl $1, %r13d jle .L65 vxorpd %xmm6, %xmm6, %xmm6 subl $2, %r13d xorl %r14d, %r14d addq $1, %r13 vmovsd %xmm6, -56(%rbp) .p2align 4,,10 .p2align 3 .L59: vmovsd .LC12(%rip), %xmm2 movl $.LC15, %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 .L69 .L57: vaddsd -56(%rbp), %xmm0, %xmm4 addq $1, %r14 cmpq %r13, %r14 vmovsd %xmm4, -56(%rbp) jne .L59 .L54: movq %r15, %rcx movl $7, %edx movl $1, %esi movl $.LC16, %edi call fwrite vmovsd -56(%rbp), %xmm0 movl $.LC17, %edi movl $1, %eax call printf xorl %edi, %edi call exit .L69: vmovapd %xmm1, %xmm0 call sqrt jmp .L57 .L68: movq -64(%rbp), %rsi movq -56(%rbp), %rdi movl %r13d, %ecx movq %r12, %rdx call tsp movl $.LC8, %esi movl $.LC9, %edi call fopen movl $.LC10, %esi movq %rax, %r15 movq %rax, %rdi xorl %eax, %eax call fprintf movl $1, %esi movl $.LC11, %edi movq %r15, %rcx movl $29, %edx call fwrite vmovsd .LC12(%rip), %xmm1 movl $.LC13, %esi movq %r15, %rdi movl $2, %eax vmulsd 32(%rbx), %xmm1, %xmm0 vmulsd (%r12), %xmm1, %xmm1 call fprintf .L65: vxorpd %xmm7, %xmm7, %xmm7 vmovsd %xmm7, -56(%rbp) jmp .L54 .cfi_endproc .LFE29: .size main, .-main .section .text.unlikely .LCOLDE18: .section .text.startup .LHOTE18: .section .rodata.cst8,"aM",@progbits,8 .align 8 .LC4: .long 4294967295 .long 2146435071 .align 8 .LC12: .long 0 .long 1081262080 .align 8 .LC14: .long 0 .long 1040187392 .ident "GCC: (Debian 4.9.2-10) 4.9.2" .section .note.GNU-stack,"",@progbits