void biCubicCoefs(double z[16], double c[16]) {
  static double genMat[16][16] = {
      {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
      {0, 0, 0, 0, -0.33333333333333333, -0.5, 1, -0.16666666666666667, 0, 0, 0,
       0, 0, 0, 0, 0},
      {0, 0, 0, 0, 0.5, -1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0},
      {0, 0, 0, 0, -0.16666666666666667, 0.5, -0.5, 0.16666666666666667, 0, 0,
       0, 0, 0, 0, 0, 0},
      {0, -0.33333333333333333, 0, 0, 0, -0.5, 0, 0, 0, 1, 0, 0, 0,
       -0.166666666666666667, 0, 0},
      {0.111111111111111111, 0.1666666666666666667, -0.333333333333333333,
       0.0555555555555555555, 0.16666666666666666667, 0.25, -0.5,
       0.083333333333333333333, -0.3333333333333333333, -0.5, 1,
       -0.166666666666667, 0.0555555555555555, 0.0833333333333333,
       -0.166666666666666667, 0.0277777777777777778},
      {-0.16666666666666667, 0.333333333333333333, -0.1666666666666666667, 0,
       -0.25, 0.5, -0.25, 0, 0.5, -1, 0.5, 0, -0.083333333333333333333,
       0.166666666666666666667, -0.0833333333333333, 0},
      {0.0555555555555555555556, -0.1666666666666666667, 0.1666666666666666667,
       -0.05555555555555555556, 0.083333333333333333333, -0.25, 0.25,
       -0.08333333333333333333, -0.1666666666666666667, 0.5, -0.5,
       0.1666666666666666667, 0.02777777777777777778, -0.08333333333333333333,
       0.08333333333333333333, -0.02777777777777777778},
      {0, 0.5, 0, 0, 0, -1, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0},
      {-0.1666666666666666667, -0.25, 0.5, -0.0833333333333333333,
       0.333333333333333333, 0.5, -1, 0.1666666666666666667,
       -0.1666666666666666667, -0.25, 0.5, -0.083333333333333333, 0, 0, 0, 0},
      {0.25, -0.5, 0.25, 0, -0.5, 1, -0.5, 0, 0.25, -0.5, 0.25, 0, 0, 0, 0, 0},
      {-0.083333333333333333, 0.25, -0.25, 0.08333333333333333333,
       0.166666666666666667, -0.5, 0.5, -0.166666666666666667,
       -0.0833333333333333333, 0.25, -0.25, 0.083333333333333333, 0, 0, 0, 0},
      {0, -0.166666666666666667, 0, 0, 0, 0.5, 0, 0, 0, -0.5, 0, 0, 0,
       0.1666666666666666667, 0, 0},
      {0.05555555555555555556, 0.083333333333333333333, -0.16666666666666666667,
       0.0277777777777777778, -0.166666666666666667, -0.25, 0.5,
       -0.0833333333333333333, 0.166666666666666667, 0.25, -0.5,
       0.08333333333333333333, -0.05555555555555555556, -0.083333333333333333,
       0.1666666666666666667, -0.02777777777777777778},
      {-0.083333333333333333333, 0.16666666666666666667,
       -0.083333333333333333333, 0, 0.25, -0.5, 0.25, 0, -0.25, 0.5, -0.25, 0,
       0.083333333333333333333, -0.16666666666666666667,
       0.083333333333333333333, 0},
      {0.027777777777777777778, -0.083333333333333333333,
       0.083333333333333333333, -0.02777777777777777778, -0.0833333333333333333,
       0.25, -0.25, 0.08333333333333333333, 0.08333333333333333333, -0.25, 0.25,
       -0.083333333333333333333, -0.0277777777777777778, 0.0833333333333333333,
       -0.0833333333333333333, 0.0277777777777777778}};
  int k;
  for (k = 0; k < 16; k++) {
    int m;
    double zz;
    zz = 0.0;
    for (m = 0; m < 16; m++) {
      zz += genMat[k][m] * z[m];
    }
    c[k] = zz;
  }
}


x86 assembly (clang, -O0):
<biCubicCoefs>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x10,-0x14(%rbp)
jge    119e <biCubicCoefs+0x9e>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x10,-0x18(%rbp)
jge    117e <biCubicCoefs+0x7e>
movslq -0x14(%rbp),%rcx
lea    0x2eef(%rip),%rax
shl    $0x7,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    112c <biCubicCoefs+0x2c>
movsd  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1113 <biCubicCoefs+0x13>
pop    %rbp
ret

x86 assembly (clang, -O2):
<biCubicCoefs>:
lea    0x80(%rdi),%rax
cmp    %rsi,%rax
jbe    122a <biCubicCoefs+0x12a>
lea    0x80(%rsi),%rax
cmp    %rdi,%rax
jbe    122a <biCubicCoefs+0x12a>
lea    0xf61(%rip),%rax
xor    %ecx,%ecx
xorpd  %xmm0,%xmm0
nopl   (%rax)
movsd  -0x78(%rax),%xmm1
mulsd  (%rdi),%xmm1
movsd  -0x70(%rax),%xmm2
addsd  %xmm0,%xmm1
mulsd  0x8(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  -0x68(%rax),%xmm1
mulsd  0x10(%rdi),%xmm1
addsd  %xmm2,%xmm1
movsd  -0x60(%rax),%xmm2
mulsd  0x18(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  -0x58(%rax),%xmm1
mulsd  0x20(%rdi),%xmm1
addsd  %xmm2,%xmm1
movsd  -0x50(%rax),%xmm2
mulsd  0x28(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  -0x48(%rax),%xmm1
mulsd  0x30(%rdi),%xmm1
addsd  %xmm2,%xmm1
movsd  -0x40(%rax),%xmm2
mulsd  0x38(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  -0x38(%rax),%xmm1
mulsd  0x40(%rdi),%xmm1
addsd  %xmm2,%xmm1
movsd  -0x30(%rax),%xmm2
mulsd  0x48(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  -0x28(%rax),%xmm1
mulsd  0x50(%rdi),%xmm1
addsd  %xmm2,%xmm1
movsd  -0x20(%rax),%xmm2
mulsd  0x58(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  -0x18(%rax),%xmm1
mulsd  0x60(%rdi),%xmm1
addsd  %xmm2,%xmm1
movsd  -0x10(%rax),%xmm2
mulsd  0x68(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  -0x8(%rax),%xmm1
mulsd  0x70(%rdi),%xmm1
addsd  %xmm2,%xmm1
movsd  (%rax),%xmm2
mulsd  0x78(%rdi),%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,(%rsi,%rcx,8)
add    $0x1,%rcx
sub    $0xffffffffffffff80,%rax
cmp    $0x10,%rcx
jne    1130 <biCubicCoefs+0x30>
jmp    1477 <biCubicCoefs+0x377>
movsd  (%rdi),%xmm0
movsd  0x8(%rdi),%xmm1
movsd  0x10(%rdi),%xmm2
movsd  0x18(%rdi),%xmm3
movlhps %xmm0,%xmm0
movaps %xmm0,-0x18(%rsp)
unpcklpd %xmm1,%xmm1
movapd %xmm1,-0x28(%rsp)
unpcklpd %xmm2,%xmm2
movapd %xmm2,-0x38(%rsp)
movlhps %xmm3,%xmm3
movaps %xmm3,-0x48(%rsp)
movsd  0x20(%rdi),%xmm0
movlhps %xmm0,%xmm0
movaps %xmm0,-0x58(%rsp)
movsd  0x28(%rdi),%xmm0
unpcklpd %xmm0,%xmm0
movapd %xmm0,-0x68(%rsp)
movsd  0x30(%rdi),%xmm14
unpcklpd %xmm14,%xmm14
movsd  0x38(%rdi),%xmm15
unpcklpd %xmm15,%xmm15
movsd  0x40(%rdi),%xmm11
unpcklpd %xmm11,%xmm11
movsd  0x48(%rdi),%xmm12
unpcklpd %xmm12,%xmm12
movsd  0x50(%rdi),%xmm13
unpcklpd %xmm13,%xmm13
movsd  0x58(%rdi),%xmm3
unpcklpd %xmm3,%xmm3
movsd  0x60(%rdi),%xmm4
unpcklpd %xmm4,%xmm4
movsd  0x68(%rdi),%xmm5
unpcklpd %xmm5,%xmm5
movsd  0x70(%rdi),%xmm6
unpcklpd %xmm6,%xmm6
movsd  0x78(%rdi),%xmm7
unpcklpd %xmm7,%xmm7
lea    0xe20(%rip),%rax
xor    %ecx,%ecx
nopw   0x0(%rax,%rax,1)
movsd  -0xf8(%rax),%xmm8
ff ff
movhpd -0x78(%rax),%xmm8
movsd  -0xf0(%rax),%xmm9
ff ff
movsd  -0xe8(%rax),%xmm10
ff ff
movhpd -0x70(%rax),%xmm9
mulpd  -0x18(%rsp),%xmm8
addpd  0xcd9(%rip),%xmm8
mulpd  -0x28(%rsp),%xmm9
addpd  %xmm8,%xmm9
movsd  -0xe0(%rax),%xmm0
ff
movhpd -0x68(%rax),%xmm10
mulpd  -0x38(%rsp),%xmm10
addpd  %xmm9,%xmm10
movhpd -0x60(%rax),%xmm0
movsd  -0xd8(%rax),%xmm1
ff
mulpd  -0x48(%rsp),%xmm0
movhpd -0x58(%rax),%xmm1
mulpd  -0x58(%rsp),%xmm1
addpd  %xmm10,%xmm0
movsd  -0xd0(%rax),%xmm2
ff
movhpd -0x50(%rax),%xmm2
addpd  %xmm0,%xmm1
movsd  -0xc8(%rax),%xmm0
ff
movhpd -0x48(%rax),%xmm0
mulpd  -0x68(%rsp),%xmm2
addpd  %xmm1,%xmm2
mulpd  %xmm14,%xmm0
movsd  -0xc0(%rax),%xmm1
ff
addpd  %xmm2,%xmm0
movhpd -0x40(%rax),%xmm1
movsd  -0xb8(%rax),%xmm2
ff
mulpd  %xmm15,%xmm1
movhpd -0x38(%rax),%xmm2
mulpd  %xmm11,%xmm2
addpd  %xmm0,%xmm1
movsd  -0xb0(%rax),%xmm0
ff
movhpd -0x30(%rax),%xmm0
addpd  %xmm1,%xmm2
movsd  -0xa8(%rax),%xmm1
ff
movhpd -0x28(%rax),%xmm1
mulpd  %xmm12,%xmm0
addpd  %xmm2,%xmm0
mulpd  %xmm13,%xmm1
movsd  -0xa0(%rax),%xmm2
ff
addpd  %xmm0,%xmm1
movhpd -0x20(%rax),%xmm2
movsd  -0x98(%rax),%xmm0
ff
mulpd  %xmm3,%xmm2
movhpd -0x18(%rax),%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm1,%xmm2
movsd  -0x90(%rax),%xmm1
ff
movhpd -0x10(%rax),%xmm1
addpd  %xmm2,%xmm0
movsd  -0x88(%rax),%xmm2
ff
movhpd -0x8(%rax),%xmm2
mulpd  %xmm5,%xmm1
addpd  %xmm0,%xmm1
mulpd  %xmm6,%xmm2
addpd  %xmm1,%xmm2
movsd  -0x80(%rax),%xmm0
movhpd (%rax),%xmm0
mulpd  %xmm7,%xmm0
addpd  %xmm2,%xmm0
movupd %xmm0,(%rsi,%rcx,8)
add    $0x2,%rcx
add    $0x100,%rax
cmp    $0x10,%rcx
jne    12f0 <biCubicCoefs+0x1f0>
ret

LLVM IR (-O0):
@biCubicCoefs.genMat = internal global <{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }> <{ <{ double, double, double, double, double, double, [10 x double] }> <{ double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, [10 x double] zeroinitializer }>, <{ [8 x double], [8 x double] }> <{ [8 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0xBFD5555555555555, double -5.000000e-01, double 1.000000e+00, double 0xBFC5555555555555], [8 x double] zeroinitializer }>, <{ double, double, double, double, double, double, double, [9 x double] }> <{ double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 5.000000e-01, double -1.000000e+00, double 5.000000e-01, [9 x double] zeroinitializer }>, <{ [8 x double], [8 x double] }> <{ [8 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0xBFC5555555555555, double 5.000000e-01, double -5.000000e-01, double 0x3FC5555555555555], [8 x double] zeroinitializer }>, [16 x double] [double 0.000000e+00, double 0xBFD5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double -5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0xBFC5555555555555, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0x3FBC71C71C71C71C, double 0x3FC5555555555555, double 0xBFD5555555555555, double 0x3FAC71C71C71C71C, double 0x3FC5555555555555, double 2.500000e-01, double -5.000000e-01, double 0x3FB5555555555555, double 0xBFD5555555555555, double -5.000000e-01, double 1.000000e+00, double 0xBFC5555555555561, double 0x3FAC71C71C71C714, double 0x3FB5555555555553, double 0xBFC5555555555555, double 0x3F9C71C71C71C71C], [16 x double] [double 0xBFC5555555555555, double 0x3FD5555555555555, double 0xBFC5555555555555, double 0.000000e+00, double -2.500000e-01, double 5.000000e-01, double -2.500000e-01, double 0.000000e+00, double 5.000000e-01, double -1.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0xBFB5555555555555, double 0x3FC5555555555555, double 0xBFB5555555555553, double 0.000000e+00], [16 x double] [double 0x3FAC71C71C71C71C, double 0xBFC5555555555555, double 0x3FC5555555555555, double 0xBFAC71C71C71C71C, double 0x3FB5555555555555, double -2.500000e-01, double 2.500000e-01, double 0xBFB5555555555555, double 0xBFC5555555555555, double 5.000000e-01, double -5.000000e-01, double 0x3FC5555555555555, double 0x3F9C71C71C71C71C, double 0xBFB5555555555555, double 0x3FB5555555555555, double 0xBF9C71C71C71C71C], [16 x double] [double 0.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double -1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0xBFC5555555555555, double -2.500000e-01, double 5.000000e-01, double 0xBFB5555555555555, double 0x3FD5555555555555, double 5.000000e-01, double -1.000000e+00, double 0x3FC5555555555555, double 0xBFC5555555555555, double -2.500000e-01, double 5.000000e-01, double 0xBFB5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 2.500000e-01, double -5.000000e-01, double 2.500000e-01, double 0.000000e+00, double -5.000000e-01, double 1.000000e+00, double -5.000000e-01, double 0.000000e+00, double 2.500000e-01, double -5.000000e-01, double 2.500000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0xBFB5555555555555, double 2.500000e-01, double -2.500000e-01, double 0x3FB5555555555555, double 0x3FC5555555555555, double -5.000000e-01, double 5.000000e-01, double 0xBFC5555555555555, double 0xBFB5555555555555, double 2.500000e-01, double -2.500000e-01, double 0x3FB5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0.000000e+00, double 0xBFC5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double -5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0x3FC5555555555555, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0x3FAC71C71C71C71C, double 0x3FB5555555555555, double 0xBFC5555555555555, double 0x3F9C71C71C71C71C, double 0xBFC5555555555555, double -2.500000e-01, double 5.000000e-01, double 0xBFB5555555555555, double 0x3FC5555555555555, double 2.500000e-01, double -5.000000e-01, double 0x3FB5555555555555, double 0xBFAC71C71C71C71C, double 0xBFB5555555555555, double 0x3FC5555555555555, double 0xBF9C71C71C71C71C], [16 x double] [double 0xBFB5555555555555, double 0x3FC5555555555555, double 0xBFB5555555555555, double 0.000000e+00, double 2.500000e-01, double -5.000000e-01, double 2.500000e-01, double 0.000000e+00, double -2.500000e-01, double 5.000000e-01, double -2.500000e-01, double 0.000000e+00, double 0x3FB5555555555555, double 0xBFC5555555555555, double 0x3FB5555555555555, double 0.000000e+00], [16 x double] [double 0x3F9C71C71C71C71C, double 0xBFB5555555555555, double 0x3FB5555555555555, double 0xBF9C71C71C71C71C, double 0xBFB5555555555555, double 2.500000e-01, double -2.500000e-01, double 0x3FB5555555555555, double 0x3FB5555555555555, double -2.500000e-01, double 2.500000e-01, double 0xBFB5555555555555, double 0xBF9C71C71C71C71C, double 0x3FB5555555555555, double 0xBFB5555555555555, double 0x3F9C71C71C71C71C] }>
define void @biCubicCoefs(double* %0, double* %1) {
%3 = alloca double*
%4 = alloca double*
%5 = alloca i32
%6 = alloca i32
%7 = alloca double
store double* %0, double** %3
store double* %1, double** %4
store i32 0, i32* %5
br label %8
8: ; preds = %39, %2
%9 = load i32, i32* %5
%10 = icmp slt i32 %9, 16
br i1 %10, label %11, label %42
11: ; preds = %8
store double 0.000000e+00, double* %7
store i32 0, i32* %6
br label %12
12: ; preds = %30, %11
%13 = load i32, i32* %6
%14 = icmp slt i32 %13, 16
br i1 %14, label %15, label %33
15: ; preds = %12
%16 = load i32, i32* %5
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %17
%19 = load i32, i32* %6
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds [16 x double], [16 x double]* %18, i64 0, i64 %20
%22 = load double, double* %21
%23 = load double*, double** %3
%24 = load i32, i32* %6
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds double, double* %23, i64 %25
%27 = load double, double* %26
%28 = load double, double* %7
%29 = call double @llvm.fmuladd.f64(double %22, double %27, double %28)
store double %29, double* %7
br label %30
30: ; preds = %15
%31 = load i32, i32* %6
%32 = add nsw i32 %31, 1
store i32 %32, i32* %6
br label %12
33: ; preds = %12
%34 = load double, double* %7
%35 = load double*, double** %4
%36 = load i32, i32* %5
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds double, double* %35, i64 %37
store double %34, double* %38
br label %39
39: ; preds = %33
%40 = load i32, i32* %5
%41 = add nsw i32 %40, 1
store i32 %41, i32* %5
br label %8
42: ; preds = %8
ret void
}

LLVM IR (-O2):
@biCubicCoefs.genMat = internal unnamed_addr constant <{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }> <{ <{ double, double, double, double, double, double, [10 x double] }> <{ double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, [10 x double] zeroinitializer }>, <{ [8 x double], [8 x double] }> <{ [8 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0xBFD5555555555555, double -5.000000e-01, double 1.000000e+00, double 0xBFC5555555555555], [8 x double] zeroinitializer }>, <{ double, double, double, double, double, double, double, [9 x double] }> <{ double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 5.000000e-01, double -1.000000e+00, double 5.000000e-01, [9 x double] zeroinitializer }>, <{ [8 x double], [8 x double] }> <{ [8 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0xBFC5555555555555, double 5.000000e-01, double -5.000000e-01, double 0x3FC5555555555555], [8 x double] zeroinitializer }>, [16 x double] [double 0.000000e+00, double 0xBFD5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double -5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0xBFC5555555555555, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0x3FBC71C71C71C71C, double 0x3FC5555555555555, double 0xBFD5555555555555, double 0x3FAC71C71C71C71C, double 0x3FC5555555555555, double 2.500000e-01, double -5.000000e-01, double 0x3FB5555555555555, double 0xBFD5555555555555, double -5.000000e-01, double 1.000000e+00, double 0xBFC5555555555561, double 0x3FAC71C71C71C714, double 0x3FB5555555555553, double 0xBFC5555555555555, double 0x3F9C71C71C71C71C], [16 x double] [double 0xBFC5555555555555, double 0x3FD5555555555555, double 0xBFC5555555555555, double 0.000000e+00, double -2.500000e-01, double 5.000000e-01, double -2.500000e-01, double 0.000000e+00, double 5.000000e-01, double -1.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0xBFB5555555555555, double 0x3FC5555555555555, double 0xBFB5555555555553, double 0.000000e+00], [16 x double] [double 0x3FAC71C71C71C71C, double 0xBFC5555555555555, double 0x3FC5555555555555, double 0xBFAC71C71C71C71C, double 0x3FB5555555555555, double -2.500000e-01, double 2.500000e-01, double 0xBFB5555555555555, double 0xBFC5555555555555, double 5.000000e-01, double -5.000000e-01, double 0x3FC5555555555555, double 0x3F9C71C71C71C71C, double 0xBFB5555555555555, double 0x3FB5555555555555, double 0xBF9C71C71C71C71C], [16 x double] [double 0.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double -1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0xBFC5555555555555, double -2.500000e-01, double 5.000000e-01, double 0xBFB5555555555555, double 0x3FD5555555555555, double 5.000000e-01, double -1.000000e+00, double 0x3FC5555555555555, double 0xBFC5555555555555, double -2.500000e-01, double 5.000000e-01, double 0xBFB5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 2.500000e-01, double -5.000000e-01, double 2.500000e-01, double 0.000000e+00, double -5.000000e-01, double 1.000000e+00, double -5.000000e-01, double 0.000000e+00, double 2.500000e-01, double -5.000000e-01, double 2.500000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0xBFB5555555555555, double 2.500000e-01, double -2.500000e-01, double 0x3FB5555555555555, double 0x3FC5555555555555, double -5.000000e-01, double 5.000000e-01, double 0xBFC5555555555555, double 0xBFB5555555555555, double 2.500000e-01, double -2.500000e-01, double 0x3FB5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0.000000e+00, double 0xBFC5555555555555, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double -5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0x3FC5555555555555, double 0.000000e+00, double 0.000000e+00], [16 x double] [double 0x3FAC71C71C71C71C, double 0x3FB5555555555555, double 0xBFC5555555555555, double 0x3F9C71C71C71C71C, double 0xBFC5555555555555, double -2.500000e-01, double 5.000000e-01, double 0xBFB5555555555555, double 0x3FC5555555555555, double 2.500000e-01, double -5.000000e-01, double 0x3FB5555555555555, double 0xBFAC71C71C71C71C, double 0xBFB5555555555555, double 0x3FC5555555555555, double 0xBF9C71C71C71C71C], [16 x double] [double 0xBFB5555555555555, double 0x3FC5555555555555, double 0xBFB5555555555555, double 0.000000e+00, double 2.500000e-01, double -5.000000e-01, double 2.500000e-01, double 0.000000e+00, double -2.500000e-01, double 5.000000e-01, double -2.500000e-01, double 0.000000e+00, double 0x3FB5555555555555, double 0xBFC5555555555555, double 0x3FB5555555555555, double 0.000000e+00], [16 x double] [double 0x3F9C71C71C71C71C, double 0xBFB5555555555555, double 0x3FB5555555555555, double 0xBF9C71C71C71C71C, double 0xBFB5555555555555, double 2.500000e-01, double -2.500000e-01, double 0x3FB5555555555555, double 0x3FB5555555555555, double -2.500000e-01, double 2.500000e-01, double 0xBFB5555555555555, double 0xBF9C71C71C71C71C, double 0x3FB5555555555555, double 0xBFB5555555555555, double 0x3F9C71C71C71C71C] }>
define void @biCubicCoefs(double* nocapture %0, double* nocapture writeonly %1) {
%3 = getelementptr inbounds double, double* %0, i64 1
%4 = getelementptr inbounds double, double* %0, i64 2
%5 = getelementptr inbounds double, double* %0, i64 3
%6 = getelementptr inbounds double, double* %0, i64 4
%7 = getelementptr inbounds double, double* %0, i64 5
%8 = getelementptr inbounds double, double* %0, i64 6
%9 = getelementptr inbounds double, double* %0, i64 7
%10 = getelementptr inbounds double, double* %0, i64 8
%11 = getelementptr inbounds double, double* %0, i64 9
%12 = getelementptr inbounds double, double* %0, i64 10
%13 = getelementptr inbounds double, double* %0, i64 11
%14 = getelementptr inbounds double, double* %0, i64 12
%15 = getelementptr inbounds double, double* %0, i64 13
%16 = getelementptr inbounds double, double* %0, i64 14
%17 = getelementptr inbounds double, double* %0, i64 15
%18 = getelementptr double, double* %1, i64 16
%19 = getelementptr double, double* %0, i64 16
%20 = icmp ugt double* %19, %1
%21 = icmp ugt double* %18, %0
%22 = and i1 %20, %21
br i1 %22, label %191, label %23
23: ; preds = %2
%24 = load double, double* %0
%25 = insertelement <2 x double> poison, double %24, i64 0
%26 = shufflevector <2 x double> %25, <2 x double> poison, <2 x i32> zeroinitializer
%27 = load double, double* %3
%28 = insertelement <2 x double> poison, double %27, i64 0
%29 = shufflevector <2 x double> %28, <2 x double> poison, <2 x i32> zeroinitializer
%30 = load double, double* %4
%31 = insertelement <2 x double> poison, double %30, i64 0
%32 = shufflevector <2 x double> %31, <2 x double> poison, <2 x i32> zeroinitializer
%33 = load double, double* %5
%34 = insertelement <2 x double> poison, double %33, i64 0
%35 = shufflevector <2 x double> %34, <2 x double> poison, <2 x i32> zeroinitializer
%36 = load double, double* %6
%37 = insertelement <2 x double> poison, double %36, i64 0
%38 = shufflevector <2 x double> %37, <2 x double> poison, <2 x i32> zeroinitializer
%39 = load double, double* %7
%40 = insertelement <2 x double> poison, double %39, i64 0
%41 = shufflevector <2 x double> %40, <2 x double> poison, <2 x i32> zeroinitializer
%42 = load double, double* %8
%43 = insertelement <2 x double> poison, double %42, i64 0
%44 = shufflevector <2 x double> %43, <2 x double> poison, <2 x i32> zeroinitializer
%45 = load double, double* %9
%46 = insertelement <2 x double> poison, double %45, i64 0
%47 = shufflevector <2 x double> %46, <2 x double> poison, <2 x i32> zeroinitializer
%48 = load double, double* %10
%49 = insertelement <2 x double> poison, double %48, i64 0
%50 = shufflevector <2 x double> %49, <2 x double> poison, <2 x i32> zeroinitializer
%51 = load double, double* %11
%52 = insertelement <2 x double> poison, double %51, i64 0
%53 = shufflevector <2 x double> %52, <2 x double> poison, <2 x i32> zeroinitializer
%54 = load double, double* %12
%55 = insertelement <2 x double> poison, double %54, i64 0
%56 = shufflevector <2 x double> %55, <2 x double> poison, <2 x i32> zeroinitializer
%57 = load double, double* %13
%58 = insertelement <2 x double> poison, double %57, i64 0
%59 = shufflevector <2 x double> %58, <2 x double> poison, <2 x i32> zeroinitializer
%60 = load double, double* %14
%61 = insertelement <2 x double> poison, double %60, i64 0
%62 = shufflevector <2 x double> %61, <2 x double> poison, <2 x i32> zeroinitializer
%63 = load double, double* %15
%64 = insertelement <2 x double> poison, double %63, i64 0
%65 = shufflevector <2 x double> %64, <2 x double> poison, <2 x i32> zeroinitializer
%66 = load double, double* %16
%67 = insertelement <2 x double> poison, double %66, i64 0
%68 = shufflevector <2 x double> %67, <2 x double> poison, <2 x i32> zeroinitializer
%69 = load double, double* %17
%70 = insertelement <2 x double> poison, double %69, i64 0
%71 = shufflevector <2 x double> %70, <2 x double> poison, <2 x i32> zeroinitializer
br label %72
72: ; preds = %23, %72
%73 = phi i64 [ %189, %72 ], [ 0, %23 ]
%74 = or i64 %73, 1
%75 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 0
%76 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 0
%77 = load double, double* %75
%78 = load double, double* %76
%79 = insertelement <2 x double> poison, double %77, i64 0
%80 = insertelement <2 x double> %79, double %78, i64 1
%81 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %80, <2 x double> %26, <2 x double> zeroinitializer)
%82 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 1
%83 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 1
%84 = load double, double* %82
%85 = load double, double* %83
%86 = insertelement <2 x double> poison, double %84, i64 0
%87 = insertelement <2 x double> %86, double %85, i64 1
%88 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %87, <2 x double> %29, <2 x double> %81)
%89 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 2
%90 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 2
%91 = load double, double* %89
%92 = load double, double* %90
%93 = insertelement <2 x double> poison, double %91, i64 0
%94 = insertelement <2 x double> %93, double %92, i64 1
%95 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %94, <2 x double> %32, <2 x double> %88)
%96 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 3
%97 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 3
%98 = load double, double* %96
%99 = load double, double* %97
%100 = insertelement <2 x double> poison, double %98, i64 0
%101 = insertelement <2 x double> %100, double %99, i64 1
%102 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %101, <2 x double> %35, <2 x double> %95)
%103 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 4
%104 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 4
%105 = load double, double* %103
%106 = load double, double* %104
%107 = insertelement <2 x double> poison, double %105, i64 0
%108 = insertelement <2 x double> %107, double %106, i64 1
%109 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %108, <2 x double> %38, <2 x double> %102)
%110 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 5
%111 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 5
%112 = load double, double* %110
%113 = load double, double* %111
%114 = insertelement <2 x double> poison, double %112, i64 0
%115 = insertelement <2 x double> %114, double %113, i64 1
%116 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %115, <2 x double> %41, <2 x double> %109)
%117 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 6
%118 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 6
%119 = load double, double* %117
%120 = load double, double* %118
%121 = insertelement <2 x double> poison, double %119, i64 0
%122 = insertelement <2 x double> %121, double %120, i64 1
%123 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %122, <2 x double> %44, <2 x double> %116)
%124 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 7
%125 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 7
%126 = load double, double* %124
%127 = load double, double* %125
%128 = insertelement <2 x double> poison, double %126, i64 0
%129 = insertelement <2 x double> %128, double %127, i64 1
%130 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %129, <2 x double> %47, <2 x double> %123)
%131 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 8
%132 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 8
%133 = load double, double* %131
%134 = load double, double* %132
%135 = insertelement <2 x double> poison, double %133, i64 0
%136 = insertelement <2 x double> %135, double %134, i64 1
%137 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %136, <2 x double> %50, <2 x double> %130)
%138 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 9
%139 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 9
%140 = load double, double* %138
%141 = load double, double* %139
%142 = insertelement <2 x double> poison, double %140, i64 0
%143 = insertelement <2 x double> %142, double %141, i64 1
%144 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %143, <2 x double> %53, <2 x double> %137)
%145 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 10
%146 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 10
%147 = load double, double* %145
%148 = load double, double* %146
%149 = insertelement <2 x double> poison, double %147, i64 0
%150 = insertelement <2 x double> %149, double %148, i64 1
%151 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %150, <2 x double> %56, <2 x double> %144)
%152 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 11
%153 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 11
%154 = load double, double* %152
%155 = load double, double* %153
%156 = insertelement <2 x double> poison, double %154, i64 0
%157 = insertelement <2 x double> %156, double %155, i64 1
%158 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %157, <2 x double> %59, <2 x double> %151)
%159 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 12
%160 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 12
%161 = load double, double* %159
%162 = load double, double* %160
%163 = insertelement <2 x double> poison, double %161, i64 0
%164 = insertelement <2 x double> %163, double %162, i64 1
%165 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %164, <2 x double> %62, <2 x double> %158)
%166 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 13
%167 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 13
%168 = load double, double* %166
%169 = load double, double* %167
%170 = insertelement <2 x double> poison, double %168, i64 0
%171 = insertelement <2 x double> %170, double %169, i64 1
%172 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %171, <2 x double> %65, <2 x double> %165)
%173 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 14
%174 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 14
%175 = load double, double* %173
%176 = load double, double* %174
%177 = insertelement <2 x double> poison, double %175, i64 0
%178 = insertelement <2 x double> %177, double %176, i64 1
%179 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %178, <2 x double> %68, <2 x double> %172)
%180 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %73, i64 15
%181 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %74, i64 15
%182 = load double, double* %180
%183 = load double, double* %181
%184 = insertelement <2 x double> poison, double %182, i64 0
%185 = insertelement <2 x double> %184, double %183, i64 1
%186 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %185, <2 x double> %71, <2 x double> %179)
%187 = getelementptr inbounds double, double* %1, i64 %73
%188 = bitcast double* %187 to <2 x double>*
store <2 x double> %186, <2 x double>* %188
%189 = add nuw i64 %73, 2
%190 = icmp eq i64 %189, 16
br i1 %190, label %260, label %72
191: ; preds = %2, %191
%192 = phi i64 [ %258, %191 ], [ 0, %2 ]
%193 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 0
%194 = load double, double* %193
%195 = load double, double* %0
%196 = tail call double @llvm.fmuladd.f64(double %194, double %195, double 0.000000e+00)
%197 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 1
%198 = load double, double* %197
%199 = load double, double* %3
%200 = tail call double @llvm.fmuladd.f64(double %198, double %199, double %196)
%201 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 2
%202 = load double, double* %201
%203 = load double, double* %4
%204 = tail call double @llvm.fmuladd.f64(double %202, double %203, double %200)
%205 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 3
%206 = load double, double* %205
%207 = load double, double* %5
%208 = tail call double @llvm.fmuladd.f64(double %206, double %207, double %204)
%209 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 4
%210 = load double, double* %209
%211 = load double, double* %6
%212 = tail call double @llvm.fmuladd.f64(double %210, double %211, double %208)
%213 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 5
%214 = load double, double* %213
%215 = load double, double* %7
%216 = tail call double @llvm.fmuladd.f64(double %214, double %215, double %212)
%217 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 6
%218 = load double, double* %217
%219 = load double, double* %8
%220 = tail call double @llvm.fmuladd.f64(double %218, double %219, double %216)
%221 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 7
%222 = load double, double* %221
%223 = load double, double* %9
%224 = tail call double @llvm.fmuladd.f64(double %222, double %223, double %220)
%225 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 8
%226 = load double, double* %225
%227 = load double, double* %10
%228 = tail call double @llvm.fmuladd.f64(double %226, double %227, double %224)
%229 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 9
%230 = load double, double* %229
%231 = load double, double* %11
%232 = tail call double @llvm.fmuladd.f64(double %230, double %231, double %228)
%233 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 10
%234 = load double, double* %233
%235 = load double, double* %12
%236 = tail call double @llvm.fmuladd.f64(double %234, double %235, double %232)
%237 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 11
%238 = load double, double* %237
%239 = load double, double* %13
%240 = tail call double @llvm.fmuladd.f64(double %238, double %239, double %236)
%241 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 12
%242 = load double, double* %241
%243 = load double, double* %14
%244 = tail call double @llvm.fmuladd.f64(double %242, double %243, double %240)
%245 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 13
%246 = load double, double* %245
%247 = load double, double* %15
%248 = tail call double @llvm.fmuladd.f64(double %246, double %247, double %244)
%249 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 14
%250 = load double, double* %249
%251 = load double, double* %16
%252 = tail call double @llvm.fmuladd.f64(double %250, double %251, double %248)
%253 = getelementptr inbounds [16 x [16 x double]], [16 x [16 x double]]* bitcast (<{ <{ double, double, double, double, double, double, [10 x double] }>, <{ [8 x double], [8 x double] }>, <{ double, double, double, double, double, double, double, [9 x double] }>, <{ [8 x double], [8 x double] }>, [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double], [16 x double] }>* @biCubicCoefs.genMat to [16 x [16 x double]]*), i64 0, i64 %192, i64 15
%254 = load double, double* %253
%255 = load double, double* %17
%256 = tail call double @llvm.fmuladd.f64(double %254, double %255, double %252)
%257 = getelementptr inbounds double, double* %1, i64 %192
store double %256, double* %257
%258 = add nuw nsw i64 %192, 1
%259 = icmp eq i64 %258, 16
br i1 %259, label %260, label %191
260: ; preds = %72, %191
ret void
}