float incircle(float ax, float ay, float bx, float by, float cx, float cy,
               float dx, float dy) {
  float adx, bdx, cdx, ady, bdy, cdy;
  float bdxcdy, cdxbdy, cdxady, adxcdy, adxbdy, bdxady;
  float alift, blift, clift;
  float det;
  adx = ax - dx;
  bdx = bx - dx;
  cdx = cx - dx;
  ady = ay - dy;
  bdy = by - dy;
  cdy = cy - dy;
  bdxcdy = bdx * cdy;
  cdxbdy = cdx * bdy;
  alift = adx * adx + ady * ady;
  cdxady = cdx * ady;
  adxcdy = adx * cdy;
  blift = bdx * bdx + bdy * bdy;
  adxbdy = adx * bdy;
  bdxady = bdx * ady;
  clift = cdx * cdx + cdy * cdy;
  det = alift * (bdxcdy - cdxbdy) + blift * (cdxady - adxcdy) +
        clift * (adxbdy - bdxady);
  return det;
}


x86 assembly (clang, -O0):
<incircle>:
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  %xmm6,-0x1c(%rbp)
movss  %xmm7,-0x20(%rbp)
movss  -0x4(%rbp),%xmm0
subss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0xc(%rbp),%xmm0
subss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x14(%rbp),%xmm0
subss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x8(%rbp),%xmm0
subss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x10(%rbp),%xmm0
subss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x18(%rbp),%xmm0
subss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x28(%rbp),%xmm0
mulss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x2c(%rbp),%xmm0
mulss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x24(%rbp),%xmm2
movss  -0x30(%rbp),%xmm1
mulss  -0x30(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x2c(%rbp),%xmm0
mulss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x24(%rbp),%xmm0
mulss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x28(%rbp),%xmm0
movss  -0x28(%rbp),%xmm2
movss  -0x34(%rbp),%xmm1
mulss  -0x34(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x24(%rbp),%xmm0
mulss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x28(%rbp),%xmm0
mulss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  -0x2c(%rbp),%xmm2
movss  -0x38(%rbp),%xmm1
mulss  -0x38(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x54(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm2
subss  -0x40(%rbp),%xmm2
movss  -0x58(%rbp),%xmm0
movss  -0x44(%rbp),%xmm3
subss  -0x48(%rbp),%xmm3
mulss  %xmm3,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x5c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
subss  -0x50(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x60(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<incircle>:
subss  %xmm6,%xmm0
subss  %xmm6,%xmm2
subss  %xmm6,%xmm4
subss  %xmm7,%xmm1
subss  %xmm7,%xmm3
subss  %xmm7,%xmm5
movaps %xmm1,%xmm8
movaps %xmm4,%xmm9
mulss  %xmm1,%xmm9
movaps %xmm2,%xmm6
mulss  %xmm2,%xmm1
mulss  %xmm5,%xmm2
movaps %xmm4,%xmm7
mulss  %xmm3,%xmm7
subss  %xmm7,%xmm2
mulss  %xmm8,%xmm8
movaps %xmm0,%xmm7
mulss  %xmm0,%xmm7
addss  %xmm8,%xmm7
mulss  %xmm2,%xmm7
movaps %xmm0,%xmm2
mulss  %xmm5,%xmm2
subss  %xmm2,%xmm9
mulss  %xmm3,%xmm0
mulss  %xmm3,%xmm3
mulss  %xmm6,%xmm6
addss  %xmm3,%xmm6
mulss  %xmm9,%xmm6
addss  %xmm7,%xmm6
subss  %xmm1,%xmm0
mulss  %xmm5,%xmm5
mulss  %xmm4,%xmm4
addss  %xmm5,%xmm4
mulss  %xmm4,%xmm0
addss  %xmm6,%xmm0
ret

LLVM IR (-O0):
define float @incircle(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7) {
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca float
%30 = alloca float
%31 = alloca float
%32 = alloca float
store float %0, float* %9
store float %1, float* %10
store float %2, float* %11
store float %3, float* %12
store float %4, float* %13
store float %5, float* %14
store float %6, float* %15
store float %7, float* %16
%33 = load float, float* %9
%34 = load float, float* %15
%35 = fsub float %33, %34
store float %35, float* %17
%36 = load float, float* %11
%37 = load float, float* %15
%38 = fsub float %36, %37
store float %38, float* %18
%39 = load float, float* %13
%40 = load float, float* %15
%41 = fsub float %39, %40
store float %41, float* %19
%42 = load float, float* %10
%43 = load float, float* %16
%44 = fsub float %42, %43
store float %44, float* %20
%45 = load float, float* %12
%46 = load float, float* %16
%47 = fsub float %45, %46
store float %47, float* %21
%48 = load float, float* %14
%49 = load float, float* %16
%50 = fsub float %48, %49
store float %50, float* %22
%51 = load float, float* %18
%52 = load float, float* %22
%53 = fmul float %51, %52
store float %53, float* %23
%54 = load float, float* %19
%55 = load float, float* %21
%56 = fmul float %54, %55
store float %56, float* %24
%57 = load float, float* %17
%58 = load float, float* %17
%59 = load float, float* %20
%60 = load float, float* %20
%61 = fmul float %59, %60
%62 = call float @llvm.fmuladd.f32(float %57, float %58, float %61)
store float %62, float* %29
%63 = load float, float* %19
%64 = load float, float* %20
%65 = fmul float %63, %64
store float %65, float* %25
%66 = load float, float* %17
%67 = load float, float* %22
%68 = fmul float %66, %67
store float %68, float* %26
%69 = load float, float* %18
%70 = load float, float* %18
%71 = load float, float* %21
%72 = load float, float* %21
%73 = fmul float %71, %72
%74 = call float @llvm.fmuladd.f32(float %69, float %70, float %73)
store float %74, float* %30
%75 = load float, float* %17
%76 = load float, float* %21
%77 = fmul float %75, %76
store float %77, float* %27
%78 = load float, float* %18
%79 = load float, float* %20
%80 = fmul float %78, %79
store float %80, float* %28
%81 = load float, float* %19
%82 = load float, float* %19
%83 = load float, float* %22
%84 = load float, float* %22
%85 = fmul float %83, %84
%86 = call float @llvm.fmuladd.f32(float %81, float %82, float %85)
store float %86, float* %31
%87 = load float, float* %29
%88 = load float, float* %23
%89 = load float, float* %24
%90 = fsub float %88, %89
%91 = load float, float* %30
%92 = load float, float* %25
%93 = load float, float* %26
%94 = fsub float %92, %93
%95 = fmul float %91, %94
%96 = call float @llvm.fmuladd.f32(float %87, float %90, float %95)
%97 = load float, float* %31
%98 = load float, float* %27
%99 = load float, float* %28
%100 = fsub float %98, %99
%101 = call float @llvm.fmuladd.f32(float %97, float %100, float %96)
store float %101, float* %32
%102 = load float, float* %32
ret float %102
}

LLVM IR (-O2):
define float @incircle(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7) {
%9 = fsub float %0, %6
%10 = fsub float %2, %6
%11 = fsub float %4, %6
%12 = fsub float %1, %7
%13 = fsub float %3, %7
%14 = fsub float %5, %7
%15 = fmul float %10, %14
%16 = fmul float %11, %13
%17 = fmul float %12, %12
%18 = tail call float @llvm.fmuladd.f32(float %9, float %9, float %17)
%19 = fmul float %11, %12
%20 = fmul float %9, %14
%21 = fmul float %13, %13
%22 = tail call float @llvm.fmuladd.f32(float %10, float %10, float %21)
%23 = fmul float %9, %13
%24 = fmul float %10, %12
%25 = fmul float %14, %14
%26 = tail call float @llvm.fmuladd.f32(float %11, float %11, float %25)
%27 = fsub float %15, %16
%28 = fsub float %19, %20
%29 = fmul float %22, %28
%30 = tail call float @llvm.fmuladd.f32(float %18, float %27, float %29)
%31 = fsub float %23, %24
%32 = tail call float @llvm.fmuladd.f32(float %26, float %31, float %30)
ret float %32
}