void meyeraux(double x, double *y) {
  double x4, x5, x6, x7;
  x4 = x * x * x * x;
  x5 = x4 * x;
  x6 = x5 * x;
  x7 = x6 * x;
  *y = 35 * x4 - 84 * x5 + 70 * x6 - 20 * x7;
  return;
}


x86 assembly (clang, -O0):
<meyeraux>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xeb8(%rip),%xmm1
mulsd  -0x20(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xe8c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  0xe6f(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
movsd  0xe52(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<meyeraux>:
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm0,%xmm2
movapd %xmm2,%xmm3
mulsd  %xmm0,%xmm3
mulsd  %xmm3,%xmm0
mulsd  0xed4(%rip),%xmm2
mulsd  0xed4(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  0xed0(%rip),%xmm3
addsd  %xmm1,%xmm3
mulsd  0xecc(%rip),%xmm0
addsd  %xmm3,%xmm0
movsd  %xmm0,(%rdi)
ret

LLVM IR (-O0):
define void @meyeraux(double %0, double* %1) {
%3 = alloca double
%4 = alloca double*
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
store double %0, double* %3
store double* %1, double** %4
%9 = load double, double* %3
%10 = load double, double* %3
%11 = fmul double %9, %10
%12 = load double, double* %3
%13 = fmul double %11, %12
%14 = load double, double* %3
%15 = fmul double %13, %14
store double %15, double* %5
%16 = load double, double* %5
%17 = load double, double* %3
%18 = fmul double %16, %17
store double %18, double* %6
%19 = load double, double* %6
%20 = load double, double* %3
%21 = fmul double %19, %20
store double %21, double* %7
%22 = load double, double* %7
%23 = load double, double* %3
%24 = fmul double %22, %23
store double %24, double* %8
%25 = load double, double* %5
%26 = load double, double* %6
%27 = fmul double 8.400000e+01, %26
%28 = fneg double %27
%29 = call double @llvm.fmuladd.f64(double 3.500000e+01, double %25, double %28)
%30 = load double, double* %7
%31 = call double @llvm.fmuladd.f64(double 7.000000e+01, double %30, double %29)
%32 = load double, double* %8
%33 = call double @llvm.fmuladd.f64(double -2.000000e+01, double %32, double %31)
%34 = load double*, double** %4
store double %33, double* %34
ret void
}

LLVM IR (-O2):
define void @meyeraux(double %0, double* nocapture writeonly %1) {
%3 = fmul double %0, %0
%4 = fmul double %3, %0
%5 = fmul double %4, %0
%6 = fmul double %5, %0
%7 = fmul double %6, %0
%8 = fmul double %7, %0
%9 = fmul double %6, -8.400000e+01
%10 = tail call double @llvm.fmuladd.f64(double %5, double 3.500000e+01, double %9)
%11 = tail call double @llvm.fmuladd.f64(double %7, double 7.000000e+01, double %10)
%12 = tail call double @llvm.fmuladd.f64(double %8, double -2.000000e+01, double %11)
store double %12, double* %1
ret void
}