~/.../bmaxa_data/examples >>> cat pi.S
.file "pi.c"
.text
.p2align 4
.globl pi
.type pi, @function
pi:
.LFB11:
.cfi_startproc
leal (%rdi,%rdi), %eax
testl %eax, %eax
jle .L4
vmovsd .LC1(%rip), %xmm4
vxorps %xmm3, %xmm3, %xmm3
leal 1(,%rdi,4), %ecx
movl $1, %edx
movl $1, %eax
vxorpd %xmm2, %xmm2, %xmm2
.p2align 4
.p2align 3
.L3:
vcvtsi2sdl %eax, %xmm3, %xmm0
vdivsd %xmm0, %xmm4, %xmm0
vcvtsi2sdl %edx, %xmm3, %xmm1
addl $2, %eax
negl %edx
vmulsd %xmm1, %xmm0, %xmm0
vaddsd %xmm0, %xmm2, %xmm2
cmpl %eax, %ecx
jne .L3
vmovsd %xmm2, %xmm2, %xmm0
ret
.p2align 4
.p2align 3
.L4:
vxorpd %xmm2, %xmm2, %xmm2
vmovsd %xmm2, %xmm2, %xmm0
ret
.cfi_endproc
.LFE11:
.size pi, .-pi
.section .rodata.str1.1,"aMS",@progbits,1
.LC2:
.string "%f\n"
.section .text.startup,"ax",@progbits
.p2align 4
.globl main
.type main, @function
main:
.LFB12:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
vmovsd .LC1(%rip), %xmm4
vxorps %xmm3, %xmm3, %xmm3
vxorpd %xmm2, %xmm2, %xmm2
movl $1, %edx
movl $1, %eax
.p2align 4
.p2align 3
.L8:
vcvtsi2sdl %eax, %xmm3, %xmm0
vdivsd %xmm0, %xmm4, %xmm0
vcvtsi2sdl %edx, %xmm3, %xmm1
addl $2, %eax
negl %edx
vmulsd %xmm1, %xmm0, %xmm0
vaddsd %xmm0, %xmm2, %xmm2
cmpl $4000001, %eax
jne .L8
vmovsd %xmm2, %xmm2, %xmm0
movl $.LC2, %edi
movl $1, %eax
call printf
xorl %eax, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE12:
.size main, .-main
.section .rodata.cst8,"aM",@progbits,8
.align 8
.LC1:
.long 0
.long 1074790400
.ident "GCC: (GNU) 11.0.0 20200822 (experimental)"
.section .note.GNU-stack,"",@progbits