void(libclut_model_cieuvw_to_cie_1960_ucs)(double U, double V, double W,
                                           double u0, double v0, double *u,
                                           double *v, double *Y) {
  do {
    double w__ = (W), y__ = (w__ + 17) / 25;
    *(Y) = y__ *= y__ * y__;
    w__ *= 13;
    *(u) = (U) / w__ + (u0);
    *(v) = (V) / w__ + (v0);
  } while (0);
}


x86 assembly (clang, -O0):
<libclut_model_cieuvw_to_cie_1960_ucs>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
mov    %rdi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xed5(%rip),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  0xec0(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0xe8b(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x8(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x10(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<libclut_model_cieuvw_to_cie_1960_ucs>:
movsd  0xef8(%rip),%xmm5
addsd  %xmm2,%xmm5
divsd  0xef4(%rip),%xmm5
movapd %xmm5,%xmm6
mulsd  %xmm5,%xmm6
mulsd  %xmm5,%xmm6
movsd  %xmm6,(%rdx)
mulsd  0xee4(%rip),%xmm2
divsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
movsd  %xmm0,(%rdi)
divsd  %xmm2,%xmm1
addsd  %xmm4,%xmm1
movsd  %xmm1,(%rsi)
ret

LLVM IR (-O0):
define void @libclut_model_cieuvw_to_cie_1960_ucs(double %0, double %1, double %2, double %3, double %4, double* %5, double* %6, double* %7) {
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double
%18 = alloca double
store double %0, double* %9
store double %1, double* %10
store double %2, double* %11
store double %3, double* %12
store double %4, double* %13
store double* %5, double** %14
store double* %6, double** %15
store double* %7, double** %16
br label %19
19: ; preds = %8
%20 = load double, double* %11
store double %20, double* %17
%21 = load double, double* %17
%22 = fadd double %21, 1.700000e+01
%23 = fdiv double %22, 2.500000e+01
store double %23, double* %18
%24 = load double, double* %18
%25 = load double, double* %18
%26 = fmul double %24, %25
%27 = load double, double* %18
%28 = fmul double %27, %26
store double %28, double* %18
%29 = load double*, double** %16
store double %28, double* %29
%30 = load double, double* %17
%31 = fmul double %30, 1.300000e+01
store double %31, double* %17
%32 = load double, double* %9
%33 = load double, double* %17
%34 = fdiv double %32, %33
%35 = load double, double* %12
%36 = fadd double %34, %35
%37 = load double*, double** %14
store double %36, double* %37
%38 = load double, double* %10
%39 = load double, double* %17
%40 = fdiv double %38, %39
%41 = load double, double* %13
%42 = fadd double %40, %41
%43 = load double*, double** %15
store double %42, double* %43
br label %44
44: ; preds = %19
ret void
}

LLVM IR (-O2):
define void @libclut_model_cieuvw_to_cie_1960_ucs(double %0, double %1, double %2, double %3, double %4, double* nocapture writeonly %5, double* nocapture writeonly %6, double* nocapture writeonly %7) {
%9 = fadd double %2, 1.700000e+01
%10 = fdiv double %9, 2.500000e+01
%11 = fmul double %10, %10
%12 = fmul double %10, %11
store double %12, double* %7
%13 = fmul double %2, 1.300000e+01
%14 = fdiv double %0, %13
%15 = fadd double %14, %3
store double %15, double* %5
%16 = fdiv double %1, %13
%17 = fadd double %16, %4
store double %17, double* %6
ret void
}