extern float mac(const float *a, const float *b, unsigned int size) {
  float f;
  asm volatile("flds (%1);\n\t"
               "fmuls (%2);\n\t"
               "flds 4(%1);\n\t"
               "fmuls 4(%2);\n\t"
               "flds 8(%1);\n\t"
               "fmuls 8(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 12(%1);\n\t"
               "fmuls 12(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 16(%1);\n\t"
               "fmuls 16(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 20(%1);\n\t"
               "fmuls 20(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 24(%1);\n\t"
               "fmuls 24(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 28(%1);\n\t"
               "fmuls 28(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 32(%1);\n\t"
               "fmuls 32(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 36(%1);\n\t"
               "fmuls 36(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 40(%1);\n\t"
               "fmuls 40(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 44(%1);\n\t"
               "fmuls 44(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 48(%1);\n\t"
               "fmuls 48(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 52(%1);\n\t"
               "fmuls 52(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 56(%1);\n\t"
               "fmuls 56(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 60(%1);\n\t"
               "fmuls 60(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 64(%1);\n\t"
               "fmuls 64(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 68(%1);\n\t"
               "fmuls 68(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 72(%1);\n\t"
               "fmuls 72(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 76(%1);\n\t"
               "fmuls 76(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 80(%1);\n\t"
               "fmuls 80(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 84(%1);\n\t"
               "fmuls 84(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 88(%1);\n\t"
               "fmuls 88(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 92(%1);\n\t"
               "fmuls 92(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 96(%1);\n\t"
               "fmuls 96(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 100(%1);\n\t"
               "fmuls 100(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 104(%1);\n\t"
               "fmuls 104(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 108(%1);\n\t"
               "fmuls 108(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 112(%1);\n\t"
               "fmuls 112(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 116(%1);\n\t"
               "fmuls 116(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 120(%1);\n\t"
               "fmuls 120(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 124(%1);\n\t"
               "fmuls 124(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 128(%1);\n\t"
               "fmuls 128(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 132(%1);\n\t"
               "fmuls 132(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 136(%1);\n\t"
               "fmuls 136(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 140(%1);\n\t"
               "fmuls 140(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 144(%1);\n\t"
               "fmuls 144(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 148(%1);\n\t"
               "fmuls 148(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 152(%1);\n\t"
               "fmuls 152(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 156(%1);\n\t"
               "fmuls 156(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 160(%1);\n\t"
               "fmuls 160(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 164(%1);\n\t"
               "fmuls 164(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 168(%1);\n\t"
               "fmuls 168(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 172(%1);\n\t"
               "fmuls 172(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 176(%1);\n\t"
               "fmuls 176(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 180(%1);\n\t"
               "fmuls 180(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 184(%1);\n\t"
               "fmuls 184(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 188(%1);\n\t"
               "fmuls 188(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 192(%1);\n\t"
               "fmuls 192(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 196(%1);\n\t"
               "fmuls 196(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 200(%1);\n\t"
               "fmuls 200(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 204(%1);\n\t"
               "fmuls 204(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 208(%1);\n\t"
               "fmuls 208(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 212(%1);\n\t"
               "fmuls 212(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 216(%1);\n\t"
               "fmuls 216(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 220(%1);\n\t"
               "fmuls 220(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 224(%1);\n\t"
               "fmuls 224(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 228(%1);\n\t"
               "fmuls 228(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 232(%1);\n\t"
               "fmuls 232(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 236(%1);\n\t"
               "fmuls 236(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 240(%1);\n\t"
               "fmuls 240(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 244(%1);\n\t"
               "fmuls 244(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 248(%1);\n\t"
               "fmuls 248(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "flds 252(%1);\n\t"
               "fmuls 252(%2);\n\t"
               "fxch %%st(2);\n\t"
               "faddp;\n\t"
               "faddp;\n\t"
               : "=t"(f)
               : "r"(a), "r"(b)
               : "memory");
  return f;
}


x86 assembly (clang, -O0):
<mac>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
flds   (%rax)
fmuls  (%rcx)
flds   0x4(%rax)
fmuls  0x4(%rcx)
flds   0x8(%rax)
fmuls  0x8(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc(%rax)
fmuls  0xc(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x10(%rax)
fmuls  0x10(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x14(%rax)
fmuls  0x14(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x18(%rax)
fmuls  0x18(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x1c(%rax)
fmuls  0x1c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x20(%rax)
fmuls  0x20(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x24(%rax)
fmuls  0x24(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x28(%rax)
fmuls  0x28(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x2c(%rax)
fmuls  0x2c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x30(%rax)
fmuls  0x30(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x34(%rax)
fmuls  0x34(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x38(%rax)
fmuls  0x38(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x3c(%rax)
fmuls  0x3c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x40(%rax)
fmuls  0x40(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x44(%rax)
fmuls  0x44(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x48(%rax)
fmuls  0x48(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x4c(%rax)
fmuls  0x4c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x50(%rax)
fmuls  0x50(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x54(%rax)
fmuls  0x54(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x58(%rax)
fmuls  0x58(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x5c(%rax)
fmuls  0x5c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x60(%rax)
fmuls  0x60(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x64(%rax)
fmuls  0x64(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x68(%rax)
fmuls  0x68(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x6c(%rax)
fmuls  0x6c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x70(%rax)
fmuls  0x70(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x74(%rax)
fmuls  0x74(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x78(%rax)
fmuls  0x78(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x7c(%rax)
fmuls  0x7c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x80(%rax)
fmuls  0x80(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x84(%rax)
fmuls  0x84(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x88(%rax)
fmuls  0x88(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x8c(%rax)
fmuls  0x8c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x90(%rax)
fmuls  0x90(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x94(%rax)
fmuls  0x94(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x98(%rax)
fmuls  0x98(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x9c(%rax)
fmuls  0x9c(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xa0(%rax)
fmuls  0xa0(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xa4(%rax)
fmuls  0xa4(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xa8(%rax)
fmuls  0xa8(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xac(%rax)
fmuls  0xac(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xb0(%rax)
fmuls  0xb0(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xb4(%rax)
fmuls  0xb4(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xb8(%rax)
fmuls  0xb8(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xbc(%rax)
fmuls  0xbc(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc0(%rax)
fmuls  0xc0(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc4(%rax)
fmuls  0xc4(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc8(%rax)
fmuls  0xc8(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xcc(%rax)
fmuls  0xcc(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xd0(%rax)
fmuls  0xd0(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xd4(%rax)
fmuls  0xd4(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xd8(%rax)
fmuls  0xd8(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xdc(%rax)
fmuls  0xdc(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xe0(%rax)
fmuls  0xe0(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xe4(%rax)
fmuls  0xe4(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xe8(%rax)
fmuls  0xe8(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xec(%rax)
fmuls  0xec(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xf0(%rax)
fmuls  0xf0(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xf4(%rax)
fmuls  0xf4(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xf8(%rax)
fmuls  0xf8(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xfc(%rax)
fmuls  0xfc(%rcx)
fxch   %st(2)
faddp  %st,%st(1)
faddp  %st,%st(1)
fstps  -0x1c(%rbp)
movss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x18(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<mac>:
flds   (%rdi)
fmuls  (%rsi)
flds   0x4(%rdi)
fmuls  0x4(%rsi)
flds   0x8(%rdi)
fmuls  0x8(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc(%rdi)
fmuls  0xc(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x10(%rdi)
fmuls  0x10(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x14(%rdi)
fmuls  0x14(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x18(%rdi)
fmuls  0x18(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x1c(%rdi)
fmuls  0x1c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x20(%rdi)
fmuls  0x20(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x24(%rdi)
fmuls  0x24(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x28(%rdi)
fmuls  0x28(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x2c(%rdi)
fmuls  0x2c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x30(%rdi)
fmuls  0x30(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x34(%rdi)
fmuls  0x34(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x38(%rdi)
fmuls  0x38(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x3c(%rdi)
fmuls  0x3c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x40(%rdi)
fmuls  0x40(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x44(%rdi)
fmuls  0x44(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x48(%rdi)
fmuls  0x48(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x4c(%rdi)
fmuls  0x4c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x50(%rdi)
fmuls  0x50(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x54(%rdi)
fmuls  0x54(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x58(%rdi)
fmuls  0x58(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x5c(%rdi)
fmuls  0x5c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x60(%rdi)
fmuls  0x60(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x64(%rdi)
fmuls  0x64(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x68(%rdi)
fmuls  0x68(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x6c(%rdi)
fmuls  0x6c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x70(%rdi)
fmuls  0x70(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x74(%rdi)
fmuls  0x74(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x78(%rdi)
fmuls  0x78(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x7c(%rdi)
fmuls  0x7c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x80(%rdi)
fmuls  0x80(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x84(%rdi)
fmuls  0x84(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x88(%rdi)
fmuls  0x88(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x8c(%rdi)
fmuls  0x8c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x90(%rdi)
fmuls  0x90(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x94(%rdi)
fmuls  0x94(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x98(%rdi)
fmuls  0x98(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0x9c(%rdi)
fmuls  0x9c(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xa0(%rdi)
fmuls  0xa0(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xa4(%rdi)
fmuls  0xa4(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xa8(%rdi)
fmuls  0xa8(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xac(%rdi)
fmuls  0xac(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xb0(%rdi)
fmuls  0xb0(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xb4(%rdi)
fmuls  0xb4(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xb8(%rdi)
fmuls  0xb8(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xbc(%rdi)
fmuls  0xbc(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc0(%rdi)
fmuls  0xc0(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc4(%rdi)
fmuls  0xc4(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xc8(%rdi)
fmuls  0xc8(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xcc(%rdi)
fmuls  0xcc(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xd0(%rdi)
fmuls  0xd0(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xd4(%rdi)
fmuls  0xd4(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xd8(%rdi)
fmuls  0xd8(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xdc(%rdi)
fmuls  0xdc(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xe0(%rdi)
fmuls  0xe0(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xe4(%rdi)
fmuls  0xe4(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xe8(%rdi)
fmuls  0xe8(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xec(%rdi)
fmuls  0xec(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xf0(%rdi)
fmuls  0xf0(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xf4(%rdi)
fmuls  0xf4(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xf8(%rdi)
fmuls  0xf8(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
flds   0xfc(%rdi)
fmuls  0xfc(%rsi)
fxch   %st(2)
faddp  %st,%st(1)
faddp  %st,%st(1)
fstps  -0x4(%rsp)
movss  -0x4(%rsp),%xmm0
ret

LLVM IR (-O0):
define float @mac(float* %0, float* %1, i32 %2) {
%4 = alloca float*
%5 = alloca float*
%6 = alloca i32
%7 = alloca float
store float* %0, float** %4
store float* %1, float** %5
store i32 %2, i32* %6
%8 = load float*, float** %4
%9 = load float*, float** %5
%10 = call float asm sideeffect "flds ($1);\0A\09fmuls ($2);\0A\09flds 4($1);\0A\09fmuls 4($2);\0A\09flds 8($1);\0A\09fmuls 8($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 12($1);\0A\09fmuls 12($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 16($1);\0A\09fmuls 16($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 20($1);\0A\09fmuls 20($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 24($1);\0A\09fmuls 24($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 28($1);\0A\09fmuls 28($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 32($1);\0A\09fmuls 32($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 36($1);\0A\09fmuls 36($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 40($1);\0A\09fmuls 40($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 44($1);\0A\09fmuls 44($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 48($1);\0A\09fmuls 48($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 52($1);\0A\09fmuls 52($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 56($1);\0A\09fmuls 56($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 60($1);\0A\09fmuls 60($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 64($1);\0A\09fmuls 64($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 68($1);\0A\09fmuls 68($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 72($1);\0A\09fmuls 72($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 76($1);\0A\09fmuls 76($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 80($1);\0A\09fmuls 80($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 84($1);\0A\09fmuls 84($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 88($1);\0A\09fmuls 88($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 92($1);\0A\09fmuls 92($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 96($1);\0A\09fmuls 96($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 100($1);\0A\09fmuls 100($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 104($1);\0A\09fmuls 104($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 108($1);\0A\09fmuls 108($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 112($1);\0A\09fmuls 112($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 116($1);\0A\09fmuls 116($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 120($1);\0A\09fmuls 120($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 124($1);\0A\09fmuls 124($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 128($1);\0A\09fmuls 128($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 132($1);\0A\09fmuls 132($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 136($1);\0A\09fmuls 136($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 140($1);\0A\09fmuls 140($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 144($1);\0A\09fmuls 144($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 148($1);\0A\09fmuls 148($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 152($1);\0A\09fmuls 152($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 156($1);\0A\09fmuls 156($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 160($1);\0A\09fmuls 160($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 164($1);\0A\09fmuls 164($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 168($1);\0A\09fmuls 168($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 172($1);\0A\09fmuls 172($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 176($1);\0A\09fmuls 176($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 180($1);\0A\09fmuls 180($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 184($1);\0A\09fmuls 184($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 188($1);\0A\09fmuls 188($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 192($1);\0A\09fmuls 192($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 196($1);\0A\09fmuls 196($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 200($1);\0A\09fmuls 200($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 204($1);\0A\09fmuls 204($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 208($1);\0A\09fmuls 208($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 212($1);\0A\09fmuls 212($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 216($1);\0A\09fmuls 216($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 220($1);\0A\09fmuls 220($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 224($1);\0A\09fmuls 224($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 228($1);\0A\09fmuls 228($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 232($1);\0A\09fmuls 232($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 236($1);\0A\09fmuls 236($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 240($1);\0A\09fmuls 240($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 244($1);\0A\09fmuls 244($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 248($1);\0A\09fmuls 248($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 252($1);\0A\09fmuls 252($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09faddp;\0A\09", "={st},r,r,~{memory},~{dirflag},~{fpsr},~{flags}"(float* %8, float* %9)
store float %10, float* %7
%11 = load float, float* %7
ret float %11
}

LLVM IR (-O2):
define float @mac(float* %0, float* %1, i32 %2) {
%4 = tail call float asm sideeffect "flds ($1);\0A\09fmuls ($2);\0A\09flds 4($1);\0A\09fmuls 4($2);\0A\09flds 8($1);\0A\09fmuls 8($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 12($1);\0A\09fmuls 12($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 16($1);\0A\09fmuls 16($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 20($1);\0A\09fmuls 20($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 24($1);\0A\09fmuls 24($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 28($1);\0A\09fmuls 28($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 32($1);\0A\09fmuls 32($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 36($1);\0A\09fmuls 36($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 40($1);\0A\09fmuls 40($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 44($1);\0A\09fmuls 44($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 48($1);\0A\09fmuls 48($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 52($1);\0A\09fmuls 52($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 56($1);\0A\09fmuls 56($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 60($1);\0A\09fmuls 60($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 64($1);\0A\09fmuls 64($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 68($1);\0A\09fmuls 68($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 72($1);\0A\09fmuls 72($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 76($1);\0A\09fmuls 76($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 80($1);\0A\09fmuls 80($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 84($1);\0A\09fmuls 84($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 88($1);\0A\09fmuls 88($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 92($1);\0A\09fmuls 92($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 96($1);\0A\09fmuls 96($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 100($1);\0A\09fmuls 100($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 104($1);\0A\09fmuls 104($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 108($1);\0A\09fmuls 108($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 112($1);\0A\09fmuls 112($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 116($1);\0A\09fmuls 116($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 120($1);\0A\09fmuls 120($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 124($1);\0A\09fmuls 124($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 128($1);\0A\09fmuls 128($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 132($1);\0A\09fmuls 132($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 136($1);\0A\09fmuls 136($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 140($1);\0A\09fmuls 140($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 144($1);\0A\09fmuls 144($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 148($1);\0A\09fmuls 148($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 152($1);\0A\09fmuls 152($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 156($1);\0A\09fmuls 156($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 160($1);\0A\09fmuls 160($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 164($1);\0A\09fmuls 164($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 168($1);\0A\09fmuls 168($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 172($1);\0A\09fmuls 172($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 176($1);\0A\09fmuls 176($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 180($1);\0A\09fmuls 180($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 184($1);\0A\09fmuls 184($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 188($1);\0A\09fmuls 188($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 192($1);\0A\09fmuls 192($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 196($1);\0A\09fmuls 196($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 200($1);\0A\09fmuls 200($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 204($1);\0A\09fmuls 204($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 208($1);\0A\09fmuls 208($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 212($1);\0A\09fmuls 212($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 216($1);\0A\09fmuls 216($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 220($1);\0A\09fmuls 220($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 224($1);\0A\09fmuls 224($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 228($1);\0A\09fmuls 228($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 232($1);\0A\09fmuls 232($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 236($1);\0A\09fmuls 236($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 240($1);\0A\09fmuls 240($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 244($1);\0A\09fmuls 244($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 248($1);\0A\09fmuls 248($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09flds 252($1);\0A\09fmuls 252($2);\0A\09fxch %st(2);\0A\09faddp;\0A\09faddp;\0A\09", "={st},r,r,~{memory},~{dirflag},~{fpsr},~{flags}"(float* %0, float* %1)
ret float %4
}