float exectly(shown)
float shown;
{
  float top;
  float tmp;
  top = 1.0 - shown;
  tmp = top + shown - 1.0;
  top = 1.0 - shown - tmp;
  if ((tmp = top + shown) > 1.0) {
    tmp = 2.0 - tmp;
    top = tmp - shown;
  }
  return top;
}


x86 assembly (clang, -O0):
<exectly>:
push   %rbp
mov    %rsp,%rbp
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xee2(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x8(%rbp)
movss  -0x8(%rbp),%xmm0
addss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xebf(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xea1(%rip),%xmm0
subsd  %xmm1,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x8(%rbp)
movss  -0x8(%rbp),%xmm0
addss  -0x4(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
cvtss2sd %xmm0,%xmm0
movsd  0xe6c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11cb <exectly+0xcb>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe59(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0xc(%rbp),%xmm0
subss  -0x4(%rbp),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  -0x8(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<exectly>:
cvtsd2ss %xmm0,%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xef0(%rip),%xmm2
subsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsd2ss %xmm2,%xmm1
addss  %xmm0,%xmm1
addss  0xee1(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsd2ss %xmm2,%xmm1
movaps %xmm0,%xmm2
addss  %xmm1,%xmm2
movss  0xec7(%rip),%xmm3
subss  %xmm2,%xmm3
subss  %xmm0,%xmm3
movss  0xebb(%rip),%xmm0
cmpltss %xmm2,%xmm0
movaps %xmm0,%xmm2
andnps %xmm1,%xmm2
andps  %xmm3,%xmm0
orps   %xmm2,%xmm0
ret

LLVM IR (-O0):
define float @exectly(double %0) {
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = fptrunc double %0 to float
store float %5, float* %2
%6 = load float, float* %2
%7 = fpext float %6 to double
%8 = fsub double 1.000000e+00, %7
%9 = fptrunc double %8 to float
store float %9, float* %3
%10 = load float, float* %3
%11 = load float, float* %2
%12 = fadd float %10, %11
%13 = fpext float %12 to double
%14 = fsub double %13, 1.000000e+00
%15 = fptrunc double %14 to float
store float %15, float* %4
%16 = load float, float* %2
%17 = fpext float %16 to double
%18 = fsub double 1.000000e+00, %17
%19 = load float, float* %4
%20 = fpext float %19 to double
%21 = fsub double %18, %20
%22 = fptrunc double %21 to float
store float %22, float* %3
%23 = load float, float* %3
%24 = load float, float* %2
%25 = fadd float %23, %24
store float %25, float* %4
%26 = fpext float %25 to double
%27 = fcmp ogt double %26, 1.000000e+00
br i1 %27, label %28, label %36
28: ; preds = %1
%29 = load float, float* %4
%30 = fpext float %29 to double
%31 = fsub double 2.000000e+00, %30
%32 = fptrunc double %31 to float
store float %32, float* %4
%33 = load float, float* %4
%34 = load float, float* %2
%35 = fsub float %33, %34
store float %35, float* %3
br label %36
36: ; preds = %28, %1
%37 = load float, float* %3
ret float %37
}

LLVM IR (-O2):
define float @exectly(double %0) {
%2 = fptrunc double %0 to float
%3 = fpext float %2 to double
%4 = fsub double 1.000000e+00, %3
%5 = fptrunc double %4 to float
%6 = fadd float %2, %5
%7 = fadd float %6, -1.000000e+00
%8 = fpext float %7 to double
%9 = fsub double %4, %8
%10 = fptrunc double %9 to float
%11 = fadd float %2, %10
%12 = fcmp ogt float %11, 1.000000e+00
%13 = fsub float 2.000000e+00, %11
%14 = fsub float %13, %2
%15 = select i1 %12, float %14, float %10
ret float %15
}