.align 4,0x90 L406: jne L381 movsd (%rdx), %xmm1 # > x = vec[n-1] rdx: &vec[n-1] addq $8, %rax # i++ movsd %xmm6, (%rdx) # < vec[n-1] = x cmpq %rdx, %rax # i == n-1 rax: i divsd %xmm6, %xmm1 # x /= max x6: max mulsd %xmm1, %xmm1 # x *= x subsd %xmm2, %xmm1 # x -= frac x1:x x2:frac movapd %xmm1, %xmm3 # savex = x x3:savex addsd %xmm4, %xmm3 # csum += x x4:oldcsum x3:csum+=x movapd %xmm3, %xmm2 # frac = csum+x x2:frac=csum+savex subsd %xmm4, %xmm2 # frac -= oldcsum x2:frac-=oldscum subsd %xmm1, %xmm2 # frac -= x x2:frac-=x je L384 L391: movapd %xmm3, %xmm4 # oldcsum = csum x4:oldscum=csum L380: movsd (%rax), %xmm0 # > x = vec[i] movsd (%rsp), %xmm6 # > max ucomisd %xmm0, %xmm6 # x == max jnp L406 L381: divsd (%rsp), %xmm0 # x /= max mulsd %xmm0, %xmm0 # x *= x addq $8, %rax # i++ cmpq %rax, %rdx # i == n-1 subsd %xmm2, %xmm0 # x -= frac movapd %xmm0, %xmm3 addsd %xmm4, %xmm3 # csum += x movapd %xmm3, %xmm2 subsd %xmm4, %xmm2 # frac -= oldcsum subsd %xmm0, %xmm2 # frac -= x jne L391 L384: movsd lC8(%rip), %xmm0 # > 1.0 pxor %xmm7, %xmm7 # 0.0 subsd %xmm2, %xmm0 # 1.0 - frac addsd %xmm3, %xmm0 # + csum ucomisd %xmm0, %xmm7 # x == 0 sqrtsd %xmm0, %xmm1 # sqrt(x) ja L407 L370: mulsd (%rsp), %xmm1 # *= max movsd %xmm1, (%rsp) # register spill for object_free call jmp L377 .align 4,0x90 L404: jne L394 L377: movq %r12, %rdi call _PyObject_Free movsd (%rsp), %xmm0 # register reload after object_free call addq $24, %rsp popq %rbx popq %rbp popq %r12 popq %r13 popq %r14 popq %r15 jmp _PyFloat_FromDouble ################################################################################## .p2align 4, 0x90 LBB26_16: ## =>This Inner Loop Header: Depth=1 movsd (%rcx), %xmm3 ## xmm3 = mem[0],zero ucomisd %xmm0, %xmm3 jne LBB26_18 jp LBB26_18 ## BB#17: ## in Loop: Header=BB26_16 Depth=1 movsd -8(%r14,%r15,8), %xmm3 ## xmm3 = mem[0],zero movsd %xmm0, -8(%r14,%r15,8) LBB26_18: ## in Loop: Header=BB26_16 Depth=1 divsd %xmm0, %xmm3 mulsd %xmm3, %xmm3 subsd %xmm4, %xmm3 movapd %xmm1, %xmm2 addsd %xmm3, %xmm2 movapd %xmm2, %xmm4 subsd %xmm1, %xmm4 subsd %xmm3, %xmm4 addq $8, %rcx decq %rax movapd %xmm2, %xmm1 jne LBB26_16 jmp LBB26_19 LBB26_14: xorpd %xmm2, %xmm2 xorpd %xmm4, %xmm4 LBB26_19: movsd LCPI26_4(%rip), %xmm1 ## xmm1 = mem[0],zero subsd %xmm4, %xmm1 addsd %xmm2, %xmm1 LBB26_20: sqrtsd %xmm1, %xmm1 mulsd %xmm1, %xmm0 LBB26_21: movapd %xmm0, -64(%rbp) ## 16-byte Spill movq %r14, %rdi callq _PyObject_Free movaps -64(%rbp), %xmm0 ## 16-byte Reload addq $40, %rsp popq %rbx popq %r12 popq %r13 popq %r14 popq %r15 popq %rbp jmp _PyFloat_FromDouble ## TAILCALL