float MatDet3by3(const float *matA) {
  return (*(matA)) * (((*((matA + 1 * 3) + 1)) * (*((matA + 2 * 3) + 2)) -
                       (*((matA + 1 * 3) + 2)) * (*((matA + 2 * 3) + 1)))) -
         (*((matA) + 1)) * ((*((matA + 1 * 3))) * (*((matA + 2 * 3) + 2)) -
                            (*((matA + 1 * 3) + 2)) * (*((matA + 2 * 3)))) +
         (*((matA) + 2)) * ((*((matA + 1 * 3))) * (*((matA + 2 * 3) + 1)) -
                            (*((matA + 1 * 3) + 1)) * (*((matA + 2 * 3))));
}


x86 assembly (clang, -O0):
<MatDet3by3>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movss  0x10(%rax),%xmm2
mov    -0x8(%rbp),%rax
movss  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
movss  0x14(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulss  0x1c(%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm3,%xmm2
addss  %xmm0,%xmm2
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x8(%rbp),%rax
movss  0xc(%rax),%xmm3
mov    -0x8(%rbp),%rax
movss  0x20(%rax),%xmm5
mov    -0x8(%rbp),%rax
movss  0x14(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulss  0x18(%rax),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
mulss  %xmm5,%xmm3
addss  %xmm4,%xmm3
mulss  %xmm3,%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movss  0xc(%rax),%xmm2
mov    -0x8(%rbp),%rax
movss  0x1c(%rax),%xmm4
mov    -0x8(%rbp),%rax
movss  0x10(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulss  0x18(%rax),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<MatDet3by3>:
movss  0xc(%rdi),%xmm0
movss  0x10(%rdi),%xmm1
movss  0x20(%rdi),%xmm2
movss  0x14(%rdi),%xmm3
movss  0x1c(%rdi),%xmm4
movaps %xmm1,%xmm5
mulss  %xmm2,%xmm5
mulss  %xmm0,%xmm2
mulss  %xmm4,%xmm0
mulss  %xmm3,%xmm4
subss  %xmm4,%xmm5
movss  0x18(%rdi),%xmm4
mulss  %xmm4,%xmm3
subss  %xmm3,%xmm2
mulss  0x4(%rdi),%xmm2
mulss  (%rdi),%xmm5
subss  %xmm2,%xmm5
mulss  %xmm1,%xmm4
subss  %xmm4,%xmm0
mulss  0x8(%rdi),%xmm0
addss  %xmm5,%xmm0
ret

LLVM IR (-O0):
define float @MatDet3by3(float* %0) {
%2 = alloca float*
store float* %0, float** %2
%3 = load float*, float** %2
%4 = load float, float* %3
%5 = load float*, float** %2
%6 = getelementptr inbounds float, float* %5, i64 3
%7 = getelementptr inbounds float, float* %6, i64 1
%8 = load float, float* %7
%9 = load float*, float** %2
%10 = getelementptr inbounds float, float* %9, i64 6
%11 = getelementptr inbounds float, float* %10, i64 2
%12 = load float, float* %11
%13 = load float*, float** %2
%14 = getelementptr inbounds float, float* %13, i64 3
%15 = getelementptr inbounds float, float* %14, i64 2
%16 = load float, float* %15
%17 = load float*, float** %2
%18 = getelementptr inbounds float, float* %17, i64 6
%19 = getelementptr inbounds float, float* %18, i64 1
%20 = load float, float* %19
%21 = fmul float %16, %20
%22 = fneg float %21
%23 = call float @llvm.fmuladd.f32(float %8, float %12, float %22)
%24 = load float*, float** %2
%25 = getelementptr inbounds float, float* %24, i64 1
%26 = load float, float* %25
%27 = load float*, float** %2
%28 = getelementptr inbounds float, float* %27, i64 3
%29 = load float, float* %28
%30 = load float*, float** %2
%31 = getelementptr inbounds float, float* %30, i64 6
%32 = getelementptr inbounds float, float* %31, i64 2
%33 = load float, float* %32
%34 = load float*, float** %2
%35 = getelementptr inbounds float, float* %34, i64 3
%36 = getelementptr inbounds float, float* %35, i64 2
%37 = load float, float* %36
%38 = load float*, float** %2
%39 = getelementptr inbounds float, float* %38, i64 6
%40 = load float, float* %39
%41 = fmul float %37, %40
%42 = fneg float %41
%43 = call float @llvm.fmuladd.f32(float %29, float %33, float %42)
%44 = fmul float %26, %43
%45 = fneg float %44
%46 = call float @llvm.fmuladd.f32(float %4, float %23, float %45)
%47 = load float*, float** %2
%48 = getelementptr inbounds float, float* %47, i64 2
%49 = load float, float* %48
%50 = load float*, float** %2
%51 = getelementptr inbounds float, float* %50, i64 3
%52 = load float, float* %51
%53 = load float*, float** %2
%54 = getelementptr inbounds float, float* %53, i64 6
%55 = getelementptr inbounds float, float* %54, i64 1
%56 = load float, float* %55
%57 = load float*, float** %2
%58 = getelementptr inbounds float, float* %57, i64 3
%59 = getelementptr inbounds float, float* %58, i64 1
%60 = load float, float* %59
%61 = load float*, float** %2
%62 = getelementptr inbounds float, float* %61, i64 6
%63 = load float, float* %62
%64 = fmul float %60, %63
%65 = fneg float %64
%66 = call float @llvm.fmuladd.f32(float %52, float %56, float %65)
%67 = call float @llvm.fmuladd.f32(float %49, float %66, float %46)
ret float %67
}

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