float e(float a, float b, float c, float d, float e, float f) {
  if (a < b) {
    a = a + b;
    c = c + d;
  }
  d = d / a;
  e = e / a;
  f = f / a;
  a = a / c;
  b = b / c;
  c = 1 / c;
  return a + b + c + d + e + f;
}


x86 assembly (clang, -O0):
<e>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  %xmm4,-0x14(%rbp)
movss  %xmm5,-0x18(%rbp)
movss  -0x4(%rbp),%xmm1
movss  -0x8(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1153 <e+0x53>
movss  -0x4(%rbp),%xmm0
addss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x10(%rbp),%xmm0
divss  -0x4(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0x14(%rbp),%xmm0
divss  -0x4(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  -0x18(%rbp),%xmm0
divss  -0x4(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x4(%rbp),%xmm0
divss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x8(%rbp),%xmm0
divss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xe5a(%rip),%xmm0
divss  -0xc(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x4(%rbp),%xmm0
addss  -0x8(%rbp),%xmm0
addss  -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<e>:
xor    %eax,%eax
ucomiss %xmm0,%xmm1
seta   %al
movd   %eax,%xmm6
pshufd $0x50,%xmm6,%xmm6
pslld  $0x1f,%xmm6
psrad  $0x1f,%xmm6
movaps %xmm1,%xmm7
unpcklps %xmm3,%xmm7
andps  %xmm6,%xmm7
andnps 0xed5(%rip),%xmm6
orps   %xmm7,%xmm6
unpcklps %xmm2,%xmm0
addps  %xmm6,%xmm0
unpcklps %xmm4,%xmm5
movlhps %xmm0,%xmm1
shufps $0xe2,%xmm0,%xmm1
movaps %xmm0,%xmm2
movaps 0xec8(%rip),%xmm4
movss  %xmm3,%xmm4
divps  %xmm0,%xmm4
shufps $0x0,%xmm0,%xmm0
divps  %xmm0,%xmm5
shufps $0x55,%xmm2,%xmm2
divps  %xmm2,%xmm1
movaps %xmm1,%xmm0
shufps $0x55,%xmm1,%xmm0
addss  %xmm1,%xmm0
movaps %xmm4,%xmm1
shufps $0x55,%xmm4,%xmm1
addss  %xmm0,%xmm1
addss  %xmm4,%xmm1
movaps %xmm5,%xmm0
shufps $0x55,%xmm5,%xmm0
addss  %xmm1,%xmm0
addss  %xmm5,%xmm0
ret

LLVM IR (-O0):
define float @e(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
store float %0, float* %7
store float %1, float* %8
store float %2, float* %9
store float %3, float* %10
store float %4, float* %11
store float %5, float* %12
%13 = load float, float* %7
%14 = load float, float* %8
%15 = fcmp olt float %13, %14
br i1 %15, label %16, label %23
16: ; preds = %6
%17 = load float, float* %7
%18 = load float, float* %8
%19 = fadd float %17, %18
store float %19, float* %7
%20 = load float, float* %9
%21 = load float, float* %10
%22 = fadd float %20, %21
store float %22, float* %9
br label %23
23: ; preds = %16, %6
%24 = load float, float* %10
%25 = load float, float* %7
%26 = fdiv float %24, %25
store float %26, float* %10
%27 = load float, float* %11
%28 = load float, float* %7
%29 = fdiv float %27, %28
store float %29, float* %11
%30 = load float, float* %12
%31 = load float, float* %7
%32 = fdiv float %30, %31
store float %32, float* %12
%33 = load float, float* %7
%34 = load float, float* %9
%35 = fdiv float %33, %34
store float %35, float* %7
%36 = load float, float* %8
%37 = load float, float* %9
%38 = fdiv float %36, %37
store float %38, float* %8
%39 = load float, float* %9
%40 = fdiv float 1.000000e+00, %39
store float %40, float* %9
%41 = load float, float* %7
%42 = load float, float* %8
%43 = fadd float %41, %42
%44 = load float, float* %9
%45 = fadd float %43, %44
%46 = load float, float* %10
%47 = fadd float %45, %46
%48 = load float, float* %11
%49 = fadd float %47, %48
%50 = load float, float* %12
%51 = fadd float %49, %50
ret float %51
}

LLVM IR (-O2):
define float @e(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = fcmp olt float %0, %1
%8 = insertelement <2 x i1> poison, i1 %7, i64 0
%9 = shufflevector <2 x i1> %8, <2 x i1> poison, <2 x i32> zeroinitializer
%10 = insertelement <2 x float> poison, float %1, i64 0
%11 = insertelement <2 x float> %10, float %3, i64 1
%12 = select <2 x i1> %9, <2 x float> %11, <2 x float> <float -0.000000e+00, float -0.000000e+00>
%13 = insertelement <2 x float> poison, float %0, i64 0
%14 = insertelement <2 x float> %13, float %2, i64 1
%15 = fadd <2 x float> %12, %14
%16 = insertelement <2 x float> poison, float %5, i64 0
%17 = insertelement <2 x float> %16, float %4, i64 1
%18 = shufflevector <2 x float> %15, <2 x float> undef, <2 x i32> zeroinitializer
%19 = fdiv <2 x float> %17, %18
%20 = insertelement <2 x float> %15, float %1, i64 1
%21 = shufflevector <2 x float> %15, <2 x float> undef, <2 x i32> <i32 1, i32 1>
%22 = fdiv <2 x float> %20, %21
%23 = insertelement <2 x float> <float poison, float 1.000000e+00>, float %3, i64 0
%24 = fdiv <2 x float> %23, %15
%25 = shufflevector <2 x float> %22, <2 x float> poison, <2 x i32> <i32 1, i32 undef>
%26 = fadd <2 x float> %22, %25
%27 = shufflevector <2 x float> %24, <2 x float> poison, <2 x i32> <i32 1, i32 undef>
%28 = fadd <2 x float> %27, %26
%29 = fadd <2 x float> %24, %28
%30 = shufflevector <2 x float> %19, <2 x float> poison, <2 x i32> <i32 1, i32 undef>
%31 = fadd <2 x float> %30, %29
%32 = fadd <2 x float> %19, %31
%33 = extractelement <2 x float> %32, i64 0
ret float %33
}