define dso_local
float @det(%struct.Matrix* readonly dereferenceable
(64)) local_unnamed_addr #
0 {
%2 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 0
%3 = load float, float* %2, align 4, !tbaa !8
%4 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 5
%5 = bitcast float* %4 to <2 x float>*
%6 = load <2 x float>, <2 x float>* %5, align 4, !tbaa !8
%7 = extractelement <2 x float
> %6, i32 1
%8 = fmul float %3, %7
%9 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 7
%10 = load float, float* %9, align 4, !tbaa !8
%11 = insertelement <2 x float
> undef, float %3, i32 0
%12 = shufflevector <2 x float
> %11, <2 x float
> undef, <2 x
i32> zeroinitializer
%13 = insertelement <2 x float
> undef, float %10, i32 0
%14 = shufflevector <2 x float
> %13, <2 x float
> %6, <2 x
i32> <i32 0, i32 2>
%15 = fmul <2 x float> %12, %14
%16 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 1
%17 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 4
%18 = load float, float* %17, align 4, !tbaa !8
%19 = bitcast float* %16 to <2 x float>*
%20 = load <2 x float>, <2 x float>* %19, align 4, !tbaa !8
%21 = extractelement <2 x float
> %20, i32 1
%22 = fmul float %18, %21
%23 = fmul <2 x float> %14, %20
%24 = fmul float %10, %21
%25 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 3
%26 = load float, float* %25, align 4, !tbaa !8
%27 = insertelement <2 x float
> undef, float %18, i32 0
%28 = shufflevector <2 x float
> %27, <2 x float
> undef, <2 x
i32> zeroinitializer
%29 = insertelement <2 x float
> undef, float %26, i32 0
%30 = shufflevector <2 x float
> %29, <2 x float
> %20, <2 x
i32> <i32 0, i32 2>
%31 = fmul <2 x float> %28, %30
%32 = fmul <2 x float> %6, %30
%33 = fmul float %7, %26
%34 = fsub float %33, %24
%35 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 9
%36 = bitcast float* %35 to <2 x float>*
%37 = load <2 x float>, <2 x float>* %36, align 4, !tbaa !8
%38 = extractelement <2 x float
> %37, i32 0
%39 = fmul float %38, %34
%40 = extractelement <2 x float
> %32, i32 0
%41 = extractelement <2 x float
> %23, i32 0
%42 = fsub float %41, %40
%43 = extractelement <2 x float
> %37, i32 1
%44 = fmul float %42, %43
%45 = fadd float %39, %44
%46 = extractelement <2 x float
> %32, i32 1
%47 = extractelement <2 x float
> %23, i32 1
%48 = fsub float %47, %46
%49 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 11
%50 = load float, float* %49, align 4, !tbaa !8
%51 = fmul float %48, %50
%52 = fadd float %45, %51
%53 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 12
%54 = load float, float* %53, align 4, !tbaa !8
%55 = fmul float %54, %52
%56 = extractelement <2 x float
> %15, i32 0
%57 = extractelement <2 x float
> %31, i32 0
%58 = fsub float %57, %56
%59 = fmul float %58, %43
%60 = fsub float %8, %22
%61 = fmul float %60, %50
%62 = fadd float %59, %61
%63 = fsub float %24, %33
%64 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 8
%65 = load float, float* %64, align 4, !tbaa !8
%66 = fmul float %63, %65
%67 = fadd float %62, %66
%68 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 13
%69 = load float, float* %68, align 4, !tbaa !8
%70 = fmul float %69, %67
%71 = fadd float %55, %70
%72 = getelementptr inbounds %struct.Matrix, %struct.Matrix* %0, i64 0, i32 0, i64 14
%73 = fsub <2 x float> %32, %23
%74 = insertelement <2 x float
> undef, float %65, i32 0
%75 = shufflevector <2 x float
> %74, <2 x float
> undef, <2 x
i32> zeroinitializer
%76 = fmul <2 x float> %73, %75
%77 = extractelement <2 x float
> %31, i32 1
%78 = insertelement <2 x float
> undef, float %77, i32 0
%79 = insertelement <2 x float
> %78, float %22, i32 1
%80 = extractelement <2 x float
> %15, i32 1
%81 = insertelement <2 x float
> undef, float %80, i32 0
%82 = insertelement <2 x float
> %81, float %8, i32 1
%83 = fsub <2 x float> %79, %82
%84 = insertelement <2 x float
> undef, float %50, i32 0
%85 = shufflevector <2 x float
> %84, <2 x float
> %37, <2 x
i32> <i32 0, i32 2>
%86 = fmul <2 x float> %83, %85
%87 = fadd <2 x float> %86, %76
%88 = fsub <2 x float> %15, %31
%89 = fmul <2 x float> %37, %88
%90 = fadd <2 x float> %89, %87
%91 = bitcast float* %72 to <2 x float>*
%92 = load <2 x float>, <2 x float>* %91, align 4, !tbaa !8
%93 = fmul <2 x float> %92, %90
%94 = extractelement <2 x float
> %93, i32 0
%95 = fadd float %71, %94
%96 = extractelement <2 x float
> %93, i32 1
%97 = fadd float %96, %95
ret float %97
}