void kernel_sgemm_nt_4x4_lib4(int kmax, float *A, float *B, float *D, float *C,
                              int alg) {
  if (kmax <= 0)
    return;
  const int lda = 4;
  const int ldc = 4;
  int k;
  float a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3,
      c_00 = 0, c_01 = 0, c_02 = 0, c_03 = 0, c_10 = 0, c_11 = 0, c_12 = 0,
      c_13 = 0, c_20 = 0, c_21 = 0, c_22 = 0, c_23 = 0, c_30 = 0, c_31 = 0,
      c_32 = 0, c_33 = 0;
  for (k = 0; k < kmax - 3; k += 4) {
    a_0 = A[0 + lda * 0];
    a_1 = A[1 + lda * 0];
    a_2 = A[2 + lda * 0];
    a_3 = A[3 + lda * 0];
    b_0 = B[0 + lda * 0];
    b_1 = B[1 + lda * 0];
    b_2 = B[2 + lda * 0];
    b_3 = B[3 + lda * 0];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    a_0 = A[0 + lda * 1];
    a_1 = A[1 + lda * 1];
    a_2 = A[2 + lda * 1];
    a_3 = A[3 + lda * 1];
    b_0 = B[0 + lda * 1];
    b_1 = B[1 + lda * 1];
    b_2 = B[2 + lda * 1];
    b_3 = B[3 + lda * 1];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    a_0 = A[0 + lda * 2];
    a_1 = A[1 + lda * 2];
    a_2 = A[2 + lda * 2];
    a_3 = A[3 + lda * 2];
    b_0 = B[0 + lda * 2];
    b_1 = B[1 + lda * 2];
    b_2 = B[2 + lda * 2];
    b_3 = B[3 + lda * 2];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    a_0 = A[0 + lda * 3];
    a_1 = A[1 + lda * 3];
    a_2 = A[2 + lda * 3];
    a_3 = A[3 + lda * 3];
    b_0 = B[0 + lda * 3];
    b_1 = B[1 + lda * 3];
    b_2 = B[2 + lda * 3];
    b_3 = B[3 + lda * 3];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    A += 16;
    B += 16;
  }
  for (; k < kmax; k++) {
    a_0 = A[0 + lda * 0];
    a_1 = A[1 + lda * 0];
    a_2 = A[2 + lda * 0];
    a_3 = A[3 + lda * 0];
    b_0 = B[0 + lda * 0];
    b_1 = B[1 + lda * 0];
    b_2 = B[2 + lda * 0];
    b_3 = B[3 + lda * 0];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    A += 4;
    B += 4;
  }
  float d_00, d_01, d_02, d_03, d_10, d_11, d_12, d_13, d_20, d_21, d_22, d_23,
      d_30, d_31, d_32, d_33;
  if (alg == 0) {
    C[0 + ldc * 0] = c_00;
    C[1 + ldc * 0] = c_10;
    C[2 + ldc * 0] = c_20;
    C[3 + ldc * 0] = c_30;
    C[0 + ldc * 1] = c_01;
    C[1 + ldc * 1] = c_11;
    C[2 + ldc * 1] = c_21;
    C[3 + ldc * 1] = c_31;
    C[0 + ldc * 2] = c_02;
    C[1 + ldc * 2] = c_12;
    C[2 + ldc * 2] = c_22;
    C[3 + ldc * 2] = c_32;
    C[0 + ldc * 3] = c_03;
    C[1 + ldc * 3] = c_13;
    C[2 + ldc * 3] = c_23;
    C[3 + ldc * 3] = c_33;
  } else {
    d_00 = D[0 + ldc * 0];
    d_10 = D[1 + ldc * 0];
    d_20 = D[2 + ldc * 0];
    d_30 = D[3 + ldc * 0];
    d_01 = D[0 + ldc * 1];
    d_11 = D[1 + ldc * 1];
    d_21 = D[2 + ldc * 1];
    d_31 = D[3 + ldc * 1];
    d_02 = D[0 + ldc * 2];
    d_12 = D[1 + ldc * 2];
    d_22 = D[2 + ldc * 2];
    d_32 = D[3 + ldc * 2];
    d_03 = D[0 + ldc * 3];
    d_13 = D[1 + ldc * 3];
    d_23 = D[2 + ldc * 3];
    d_33 = D[3 + ldc * 3];
    if (alg == 1) {
      d_00 += c_00;
      d_10 += c_10;
      d_20 += c_20;
      d_30 += c_30;
      d_01 += c_01;
      d_11 += c_11;
      d_21 += c_21;
      d_31 += c_31;
      d_02 += c_02;
      d_12 += c_12;
      d_22 += c_22;
      d_32 += c_32;
      d_03 += c_03;
      d_13 += c_13;
      d_23 += c_23;
      d_33 += c_33;
    } else {
      d_00 -= c_00;
      d_10 -= c_10;
      d_20 -= c_20;
      d_30 -= c_30;
      d_01 -= c_01;
      d_11 -= c_11;
      d_21 -= c_21;
      d_31 -= c_31;
      d_02 -= c_02;
      d_12 -= c_12;
      d_22 -= c_22;
      d_32 -= c_32;
      d_03 -= c_03;
      d_13 -= c_13;
      d_23 -= c_23;
      d_33 -= c_33;
    }
    C[0 + ldc * 0] = d_00;
    C[1 + ldc * 0] = d_10;
    C[2 + ldc * 0] = d_20;
    C[3 + ldc * 0] = d_30;
    C[0 + ldc * 1] = d_01;
    C[1 + ldc * 1] = d_11;
    C[2 + ldc * 1] = d_21;
    C[3 + ldc * 1] = d_31;
    C[0 + ldc * 2] = d_02;
    C[1 + ldc * 2] = d_12;
    C[2 + ldc * 2] = d_22;
    C[3 + ldc * 2] = d_32;
    C[0 + ldc * 3] = d_03;
    C[1 + ldc * 3] = d_13;
    C[2 + ldc * 3] = d_23;
    C[3 + ldc * 3] = d_33;
  }
}


x86 assembly (clang, -O0):
<kernel_sgemm_nt_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x58,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
cmpl   $0x0,-0x4(%rbp)
jg     112e <kernel_sgemm_nt_4x4_lib4+0x2e>
jmp    2414 <kernel_sgemm_nt_4x4_lib4+0x1314>
movl   $0x4,-0x30(%rbp)
movl   $0x4,-0x34(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x7c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1b5a <kernel_sgemm_nt_4x4_lib4+0xa5a>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x10(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
mov    -0x18(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movss  0x10(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x14(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x18(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x10(%rbp),%rax
movss  0x1c(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x10(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x14(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x18(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
mov    -0x18(%rbp),%rax
movss  0x1c(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movss  0x20(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x24(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x28(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x10(%rbp),%rax
movss  0x2c(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x20(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x24(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x28(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
mov    -0x18(%rbp),%rax
movss  0x2c(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movss  0x30(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x34(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x38(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x10(%rbp),%rax
movss  0x3c(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x30(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x34(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x38(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
mov    -0x18(%rbp),%rax
movss  0x3c(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x18(%rbp)
mov    -0x38(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x38(%rbp)
jmp    11d5 <kernel_sgemm_nt_4x4_lib4+0xd5>
jmp    1b5f <kernel_sgemm_nt_4x4_lib4+0xa5f>
mov    -0x38(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1de3 <kernel_sgemm_nt_4x4_lib4+0xce3>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x10(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
mov    -0x18(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x48(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x3c(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x48(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x18(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1b5f <kernel_sgemm_nt_4x4_lib4+0xa5f>
cmpl   $0x0,-0x2c(%rbp)
jne    1ee3 <kernel_sgemm_nt_4x4_lib4+0xde3>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x7c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0xc(%rax)
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x1c(%rax)
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x24(%rax)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x28(%rax)
movss  -0x94(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x2c(%rax)
movss  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x34(%rax)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x38(%rax)
movss  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x3c(%rax)
jmp    2414 <kernel_sgemm_nt_4x4_lib4+0x1314>
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0xac(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0xbc(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0xcc(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x10(%rax),%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x14(%rax),%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x18(%rax),%xmm0
movss  %xmm0,-0xc0(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x1c(%rax),%xmm0
movss  %xmm0,-0xd0(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x20(%rax),%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x24(%rax),%xmm0
movss  %xmm0,-0xb4(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x28(%rax),%xmm0
movss  %xmm0,-0xc4(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x2c(%rax),%xmm0
movss  %xmm0,-0xd4(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x30(%rax),%xmm0
movss  %xmm0,-0xa8(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x34(%rax),%xmm0
movss  %xmm0,-0xb8(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x38(%rax),%xmm0
movss  %xmm0,-0xc8(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x3c(%rax),%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
cmpl   $0x1,-0x2c(%rbp)
jne    2163 <kernel_sgemm_nt_4x4_lib4+0x1063>
movss  -0x5c(%rbp),%xmm0
addss  -0x9c(%rbp),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x6c(%rbp),%xmm0
addss  -0xac(%rbp),%xmm0
ff
movss  %xmm0,-0xac(%rbp)
ff
movss  -0x7c(%rbp),%xmm0
addss  -0xbc(%rbp),%xmm0
ff
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
addss  -0xcc(%rbp),%xmm0
ff
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0x60(%rbp),%xmm0
addss  -0xa0(%rbp),%xmm0
ff
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x70(%rbp),%xmm0
addss  -0xb0(%rbp),%xmm0
ff
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x80(%rbp),%xmm0
addss  -0xc0(%rbp),%xmm0
ff
movss  %xmm0,-0xc0(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
addss  -0xd0(%rbp),%xmm0
ff
movss  %xmm0,-0xd0(%rbp)
ff
movss  -0x64(%rbp),%xmm0
addss  -0xa4(%rbp),%xmm0
ff
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x74(%rbp),%xmm0
addss  -0xb4(%rbp),%xmm0
ff
movss  %xmm0,-0xb4(%rbp)
ff
movss  -0x84(%rbp),%xmm0
ff
addss  -0xc4(%rbp),%xmm0
ff
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
addss  -0xd4(%rbp),%xmm0
ff
movss  %xmm0,-0xd4(%rbp)
ff
movss  -0x68(%rbp),%xmm0
addss  -0xa8(%rbp),%xmm0
ff
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0x78(%rbp),%xmm0
addss  -0xb8(%rbp),%xmm0
ff
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0x88(%rbp),%xmm0
ff
addss  -0xc8(%rbp),%xmm0
ff
movss  %xmm0,-0xc8(%rbp)
ff
movss  -0x98(%rbp),%xmm0
ff
addss  -0xd8(%rbp),%xmm0
ff
movss  %xmm0,-0xd8(%rbp)
ff
jmp    2305 <kernel_sgemm_nt_4x4_lib4+0x1205>
movss  -0x5c(%rbp),%xmm1
movss  -0x9c(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x6c(%rbp),%xmm1
movss  -0xac(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xac(%rbp)
ff
movss  -0x7c(%rbp),%xmm1
movss  -0xbc(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xbc(%rbp)
ff
movss  -0x8c(%rbp),%xmm1
ff
movss  -0xcc(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xcc(%rbp)
ff
movss  -0x60(%rbp),%xmm1
movss  -0xa0(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x70(%rbp),%xmm1
movss  -0xb0(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
movss  -0x80(%rbp),%xmm1
movss  -0xc0(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xc0(%rbp)
ff
movss  -0x90(%rbp),%xmm1
ff
movss  -0xd0(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xd0(%rbp)
ff
movss  -0x64(%rbp),%xmm1
movss  -0xa4(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0x74(%rbp),%xmm1
movss  -0xb4(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xb4(%rbp)
ff
movss  -0x84(%rbp),%xmm1
ff
movss  -0xc4(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xc4(%rbp)
ff
movss  -0x94(%rbp),%xmm1
ff
movss  -0xd4(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xd4(%rbp)
ff
movss  -0x68(%rbp),%xmm1
movss  -0xa8(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xa8(%rbp)
ff
movss  -0x78(%rbp),%xmm1
movss  -0xb8(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xb8(%rbp)
ff
movss  -0x88(%rbp),%xmm1
ff
movss  -0xc8(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xc8(%rbp)
ff
movss  -0x98(%rbp),%xmm1
ff
movss  -0xd8(%rbp),%xmm0
ff
subss  %xmm1,%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xac(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xbc(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0xcc(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0xc(%rax)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0xb0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0xc0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0xd0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x1c(%rax)
movss  -0xa4(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0xb4(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x24(%rax)
movss  -0xc4(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x28(%rax)
movss  -0xd4(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x2c(%rax)
movss  -0xa8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0xb8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x34(%rax)
movss  -0xc8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x38(%rax)
movss  -0xd8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x3c(%rax)
add    $0x58,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_sgemm_nt_4x4_lib4>:
test   %edi,%edi
jle    139c <kernel_sgemm_nt_4x4_lib4+0x29c>
cmp    $0x4,%edi
jb     128d <kernel_sgemm_nt_4x4_lib4+0x18d>
lea    -0x3(%rdi),%r10d
xorps  %xmm9,%xmm9
xor    %eax,%eax
xorps  %xmm10,%xmm10
xorps  %xmm11,%xmm11
xorps  %xmm3,%xmm3
cs nopw 0x0(%rax,%rax,1)
movups (%rsi),%xmm0
movups 0x10(%rsi),%xmm13
movups 0x20(%rsi),%xmm12
movups 0x30(%rsi),%xmm8
movss  (%rdx),%xmm6
movss  0x4(%rdx),%xmm5
movss  0x8(%rdx),%xmm4
movss  0xc(%rdx),%xmm2
shufps $0x0,%xmm6,%xmm6
mulps  %xmm0,%xmm6
addps  %xmm9,%xmm6
shufps $0x0,%xmm5,%xmm5
mulps  %xmm0,%xmm5
addps  %xmm10,%xmm5
shufps $0x0,%xmm4,%xmm4
mulps  %xmm0,%xmm4
addps  %xmm11,%xmm4
shufps $0x0,%xmm2,%xmm2
mulps  %xmm0,%xmm2
addps  %xmm3,%xmm2
movss  0x10(%rdx),%xmm3
shufps $0x0,%xmm3,%xmm3
mulps  %xmm13,%xmm3
addps  %xmm6,%xmm3
movss  0x14(%rdx),%xmm7
shufps $0x0,%xmm7,%xmm7
mulps  %xmm13,%xmm7
addps  %xmm5,%xmm7
movss  0x18(%rdx),%xmm0
shufps $0x0,%xmm0,%xmm0
mulps  %xmm13,%xmm0
addps  %xmm4,%xmm0
movss  0x1c(%rdx),%xmm1
shufps $0x0,%xmm1,%xmm1
mulps  %xmm13,%xmm1
addps  %xmm2,%xmm1
movss  0x20(%rdx),%xmm5
shufps $0x0,%xmm5,%xmm5
mulps  %xmm12,%xmm5
addps  %xmm3,%xmm5
movss  0x24(%rdx),%xmm6
shufps $0x0,%xmm6,%xmm6
mulps  %xmm12,%xmm6
addps  %xmm7,%xmm6
movss  0x28(%rdx),%xmm4
shufps $0x0,%xmm4,%xmm4
mulps  %xmm12,%xmm4
addps  %xmm0,%xmm4
movss  0x2c(%rdx),%xmm7
shufps $0x0,%xmm7,%xmm7
mulps  %xmm12,%xmm7
addps  %xmm1,%xmm7
movss  0x30(%rdx),%xmm13
shufps $0x0,%xmm13,%xmm13
mulps  %xmm8,%xmm13
movaps %xmm13,%xmm9
addps  %xmm5,%xmm9
movss  0x34(%rdx),%xmm14
shufps $0x0,%xmm14,%xmm14
mulps  %xmm8,%xmm14
movaps %xmm14,%xmm10
addps  %xmm6,%xmm10
movss  0x38(%rdx),%xmm15
shufps $0x0,%xmm15,%xmm15
mulps  %xmm8,%xmm15
movaps %xmm15,%xmm11
addps  %xmm4,%xmm11
movss  0x3c(%rdx),%xmm12
shufps $0x0,%xmm12,%xmm12
mulps  %xmm8,%xmm12
movaps %xmm12,%xmm3
addps  %xmm7,%xmm3
add    $0x40,%rsi
add    $0x40,%rdx
add    $0x4,%eax
cmp    %r10d,%eax
jl     1130 <kernel_sgemm_nt_4x4_lib4+0x30>
addps  %xmm7,%xmm12
addps  %xmm4,%xmm15
addps  %xmm6,%xmm14
addps  %xmm5,%xmm13
mov    %edi,%eax
and    $0xfffffffc,%eax
cmp    %edi,%eax
jl     12a7 <kernel_sgemm_nt_4x4_lib4+0x1a7>
jmp    133d <kernel_sgemm_nt_4x4_lib4+0x23d>
xorps  %xmm13,%xmm13
xor    %eax,%eax
xorps  %xmm14,%xmm14
xorps  %xmm15,%xmm15
xorps  %xmm12,%xmm12
cmp    %edi,%eax
jge    133d <kernel_sgemm_nt_4x4_lib4+0x23d>
sub    %eax,%edi
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
movaps %xmm12,%xmm7
movaps %xmm15,%xmm6
movaps %xmm14,%xmm5
movaps %xmm13,%xmm8
movups (%rsi,%rax,1),%xmm4
movss  (%rdx,%rax,1),%xmm0
movss  0x4(%rdx,%rax,1),%xmm1
movss  0x8(%rdx,%rax,1),%xmm2
movss  0xc(%rdx,%rax,1),%xmm3
shufps $0x0,%xmm0,%xmm0
mulps  %xmm4,%xmm0
movaps %xmm0,%xmm13
addps  %xmm8,%xmm13
shufps $0x0,%xmm1,%xmm1
mulps  %xmm4,%xmm1
movaps %xmm1,%xmm14
addps  %xmm5,%xmm14
shufps $0x0,%xmm2,%xmm2
mulps  %xmm4,%xmm2
movaps %xmm2,%xmm15
addps  %xmm6,%xmm15
shufps $0x0,%xmm3,%xmm3
mulps  %xmm4,%xmm3
movaps %xmm3,%xmm12
addps  %xmm7,%xmm12
add    $0x10,%rax
add    $0xffffffff,%edi
jne    12b0 <kernel_sgemm_nt_4x4_lib4+0x1b0>
addps  %xmm7,%xmm3
addps  %xmm6,%xmm2
addps  %xmm5,%xmm1
addps  %xmm8,%xmm0
movaps %xmm0,%xmm13
movaps %xmm1,%xmm14
movaps %xmm2,%xmm15
movaps %xmm3,%xmm12
test   %r9d,%r9d
je     1389 <kernel_sgemm_nt_4x4_lib4+0x289>
movups (%rcx),%xmm3
movups 0x10(%rcx),%xmm2
movups 0x20(%rcx),%xmm1
movups 0x30(%rcx),%xmm0
cmp    $0x1,%r9d
jne    1369 <kernel_sgemm_nt_4x4_lib4+0x269>
addps  %xmm3,%xmm13
addps  %xmm2,%xmm14
addps  %xmm1,%xmm15
addps  %xmm0,%xmm12
jmp    1389 <kernel_sgemm_nt_4x4_lib4+0x289>
subps  %xmm13,%xmm3
subps  %xmm14,%xmm2
subps  %xmm15,%xmm1
subps  %xmm12,%xmm0
movaps %xmm3,%xmm13
movaps %xmm2,%xmm14
movaps %xmm1,%xmm15
movaps %xmm0,%xmm12
movups %xmm13,(%r8)
movups %xmm14,0x10(%r8)
movups %xmm15,0x20(%r8)
movups %xmm12,0x30(%r8)
ret

LLVM IR (-O0):
define void @kernel_sgemm_nt_4x4_lib4(i32 %0, float* %1, float* %2, float* %3, float* %4, i32 %5) {
%7 = alloca i32
%8 = alloca float*
%9 = alloca float*
%10 = alloca float*
%11 = alloca float*
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%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
%33 = alloca float
%34 = alloca float
%35 = alloca float
%36 = alloca float
%37 = alloca float
%38 = alloca float
%39 = alloca float
%40 = alloca float
%41 = alloca float
%42 = alloca float
%43 = alloca float
%44 = alloca float
%45 = alloca float
%46 = alloca float
%47 = alloca float
%48 = alloca float
%49 = alloca float
%50 = alloca float
%51 = alloca float
%52 = alloca float
%53 = alloca float
%54 = alloca float
%55 = alloca float
store i32 %0, i32* %7
store float* %1, float** %8
store float* %2, float** %9
store float* %3, float** %10
store float* %4, float** %11
store i32 %5, i32* %12
%56 = load i32, i32* %7
%57 = icmp sle i32 %56, 0
br i1 %57, label %58, label %59
58: ; preds = %6
br label %776
59: ; preds = %6
store i32 4, i32* %13
store i32 4, i32* %14
store float 0.000000e+00, float* %24
store float 0.000000e+00, float* %25
store float 0.000000e+00, float* %26
store float 0.000000e+00, float* %27
store float 0.000000e+00, float* %28
store float 0.000000e+00, float* %29
store float 0.000000e+00, float* %30
store float 0.000000e+00, float* %31
store float 0.000000e+00, float* %32
store float 0.000000e+00, float* %33
store float 0.000000e+00, float* %34
store float 0.000000e+00, float* %35
store float 0.000000e+00, float* %36
store float 0.000000e+00, float* %37
store float 0.000000e+00, float* %38
store float 0.000000e+00, float* %39
store i32 0, i32* %15
br label %60
60: ; preds = %422, %59
%61 = load i32, i32* %15
%62 = load i32, i32* %7
%63 = sub nsw i32 %62, 3
%64 = icmp slt i32 %61, %63
br i1 %64, label %65, label %425
65: ; preds = %60
%66 = load float*, float** %8
%67 = getelementptr inbounds float, float* %66, i64 0
%68 = load float, float* %67
store float %68, float* %16
%69 = load float*, float** %8
%70 = getelementptr inbounds float, float* %69, i64 1
%71 = load float, float* %70
store float %71, float* %17
%72 = load float*, float** %8
%73 = getelementptr inbounds float, float* %72, i64 2
%74 = load float, float* %73
store float %74, float* %18
%75 = load float*, float** %8
%76 = getelementptr inbounds float, float* %75, i64 3
%77 = load float, float* %76
store float %77, float* %19
%78 = load float*, float** %9
%79 = getelementptr inbounds float, float* %78, i64 0
%80 = load float, float* %79
store float %80, float* %20
%81 = load float*, float** %9
%82 = getelementptr inbounds float, float* %81, i64 1
%83 = load float, float* %82
store float %83, float* %21
%84 = load float*, float** %9
%85 = getelementptr inbounds float, float* %84, i64 2
%86 = load float, float* %85
store float %86, float* %22
%87 = load float*, float** %9
%88 = getelementptr inbounds float, float* %87, i64 3
%89 = load float, float* %88
store float %89, float* %23
%90 = load float, float* %16
%91 = load float, float* %20
%92 = load float, float* %24
%93 = call float @llvm.fmuladd.f32(float %90, float %91, float %92)
store float %93, float* %24
%94 = load float, float* %17
%95 = load float, float* %20
%96 = load float, float* %28
%97 = call float @llvm.fmuladd.f32(float %94, float %95, float %96)
store float %97, float* %28
%98 = load float, float* %18
%99 = load float, float* %20
%100 = load float, float* %32
%101 = call float @llvm.fmuladd.f32(float %98, float %99, float %100)
store float %101, float* %32
%102 = load float, float* %19
%103 = load float, float* %20
%104 = load float, float* %36
%105 = call float @llvm.fmuladd.f32(float %102, float %103, float %104)
store float %105, float* %36
%106 = load float, float* %16
%107 = load float, float* %21
%108 = load float, float* %25
%109 = call float @llvm.fmuladd.f32(float %106, float %107, float %108)
store float %109, float* %25
%110 = load float, float* %17
%111 = load float, float* %21
%112 = load float, float* %29
%113 = call float @llvm.fmuladd.f32(float %110, float %111, float %112)
store float %113, float* %29
%114 = load float, float* %18
%115 = load float, float* %21
%116 = load float, float* %33
%117 = call float @llvm.fmuladd.f32(float %114, float %115, float %116)
store float %117, float* %33
%118 = load float, float* %19
%119 = load float, float* %21
%120 = load float, float* %37
%121 = call float @llvm.fmuladd.f32(float %118, float %119, float %120)
store float %121, float* %37
%122 = load float, float* %16
%123 = load float, float* %22
%124 = load float, float* %26
%125 = call float @llvm.fmuladd.f32(float %122, float %123, float %124)
store float %125, float* %26
%126 = load float, float* %17
%127 = load float, float* %22
%128 = load float, float* %30
%129 = call float @llvm.fmuladd.f32(float %126, float %127, float %128)
store float %129, float* %30
%130 = load float, float* %18
%131 = load float, float* %22
%132 = load float, float* %34
%133 = call float @llvm.fmuladd.f32(float %130, float %131, float %132)
store float %133, float* %34
%134 = load float, float* %19
%135 = load float, float* %22
%136 = load float, float* %38
%137 = call float @llvm.fmuladd.f32(float %134, float %135, float %136)
store float %137, float* %38
%138 = load float, float* %16
%139 = load float, float* %23
%140 = load float, float* %27
%141 = call float @llvm.fmuladd.f32(float %138, float %139, float %140)
store float %141, float* %27
%142 = load float, float* %17
%143 = load float, float* %23
%144 = load float, float* %31
%145 = call float @llvm.fmuladd.f32(float %142, float %143, float %144)
store float %145, float* %31
%146 = load float, float* %18
%147 = load float, float* %23
%148 = load float, float* %35
%149 = call float @llvm.fmuladd.f32(float %146, float %147, float %148)
store float %149, float* %35
%150 = load float, float* %19
%151 = load float, float* %23
%152 = load float, float* %39
%153 = call float @llvm.fmuladd.f32(float %150, float %151, float %152)
store float %153, float* %39
%154 = load float*, float** %8
%155 = getelementptr inbounds float, float* %154, i64 4
%156 = load float, float* %155
store float %156, float* %16
%157 = load float*, float** %8
%158 = getelementptr inbounds float, float* %157, i64 5
%159 = load float, float* %158
store float %159, float* %17
%160 = load float*, float** %8
%161 = getelementptr inbounds float, float* %160, i64 6
%162 = load float, float* %161
store float %162, float* %18
%163 = load float*, float** %8
%164 = getelementptr inbounds float, float* %163, i64 7
%165 = load float, float* %164
store float %165, float* %19
%166 = load float*, float** %9
%167 = getelementptr inbounds float, float* %166, i64 4
%168 = load float, float* %167
store float %168, float* %20
%169 = load float*, float** %9
%170 = getelementptr inbounds float, float* %169, i64 5
%171 = load float, float* %170
store float %171, float* %21
%172 = load float*, float** %9
%173 = getelementptr inbounds float, float* %172, i64 6
%174 = load float, float* %173
store float %174, float* %22
%175 = load float*, float** %9
%176 = getelementptr inbounds float, float* %175, i64 7
%177 = load float, float* %176
store float %177, float* %23
%178 = load float, float* %16
%179 = load float, float* %20
%180 = load float, float* %24
%181 = call float @llvm.fmuladd.f32(float %178, float %179, float %180)
store float %181, float* %24
%182 = load float, float* %17
%183 = load float, float* %20
%184 = load float, float* %28
%185 = call float @llvm.fmuladd.f32(float %182, float %183, float %184)
store float %185, float* %28
%186 = load float, float* %18
%187 = load float, float* %20
%188 = load float, float* %32
%189 = call float @llvm.fmuladd.f32(float %186, float %187, float %188)
store float %189, float* %32
%190 = load float, float* %19
%191 = load float, float* %20
%192 = load float, float* %36
%193 = call float @llvm.fmuladd.f32(float %190, float %191, float %192)
store float %193, float* %36
%194 = load float, float* %16
%195 = load float, float* %21
%196 = load float, float* %25
%197 = call float @llvm.fmuladd.f32(float %194, float %195, float %196)
store float %197, float* %25
%198 = load float, float* %17
%199 = load float, float* %21
%200 = load float, float* %29
%201 = call float @llvm.fmuladd.f32(float %198, float %199, float %200)
store float %201, float* %29
%202 = load float, float* %18
%203 = load float, float* %21
%204 = load float, float* %33
%205 = call float @llvm.fmuladd.f32(float %202, float %203, float %204)
store float %205, float* %33
%206 = load float, float* %19
%207 = load float, float* %21
%208 = load float, float* %37
%209 = call float @llvm.fmuladd.f32(float %206, float %207, float %208)
store float %209, float* %37
%210 = load float, float* %16
%211 = load float, float* %22
%212 = load float, float* %26
%213 = call float @llvm.fmuladd.f32(float %210, float %211, float %212)
store float %213, float* %26
%214 = load float, float* %17
%215 = load float, float* %22
%216 = load float, float* %30
%217 = call float @llvm.fmuladd.f32(float %214, float %215, float %216)
store float %217, float* %30
%218 = load float, float* %18
%219 = load float, float* %22
%220 = load float, float* %34
%221 = call float @llvm.fmuladd.f32(float %218, float %219, float %220)
store float %221, float* %34
%222 = load float, float* %19
%223 = load float, float* %22
%224 = load float, float* %38
%225 = call float @llvm.fmuladd.f32(float %222, float %223, float %224)
store float %225, float* %38
%226 = load float, float* %16
%227 = load float, float* %23
%228 = load float, float* %27
%229 = call float @llvm.fmuladd.f32(float %226, float %227, float %228)
store float %229, float* %27
%230 = load float, float* %17
%231 = load float, float* %23
%232 = load float, float* %31
%233 = call float @llvm.fmuladd.f32(float %230, float %231, float %232)
store float %233, float* %31
%234 = load float, float* %18
%235 = load float, float* %23
%236 = load float, float* %35
%237 = call float @llvm.fmuladd.f32(float %234, float %235, float %236)
store float %237, float* %35
%238 = load float, float* %19
%239 = load float, float* %23
%240 = load float, float* %39
%241 = call float @llvm.fmuladd.f32(float %238, float %239, float %240)
store float %241, float* %39
%242 = load float*, float** %8
%243 = getelementptr inbounds float, float* %242, i64 8
%244 = load float, float* %243
store float %244, float* %16
%245 = load float*, float** %8
%246 = getelementptr inbounds float, float* %245, i64 9
%247 = load float, float* %246
store float %247, float* %17
%248 = load float*, float** %8
%249 = getelementptr inbounds float, float* %248, i64 10
%250 = load float, float* %249
store float %250, float* %18
%251 = load float*, float** %8
%252 = getelementptr inbounds float, float* %251, i64 11
%253 = load float, float* %252
store float %253, float* %19
%254 = load float*, float** %9
%255 = getelementptr inbounds float, float* %254, i64 8
%256 = load float, float* %255
store float %256, float* %20
%257 = load float*, float** %9
%258 = getelementptr inbounds float, float* %257, i64 9
%259 = load float, float* %258
store float %259, float* %21
%260 = load float*, float** %9
%261 = getelementptr inbounds float, float* %260, i64 10
%262 = load float, float* %261
store float %262, float* %22
%263 = load float*, float** %9
%264 = getelementptr inbounds float, float* %263, i64 11
%265 = load float, float* %264
store float %265, float* %23
%266 = load float, float* %16
%267 = load float, float* %20
%268 = load float, float* %24
%269 = call float @llvm.fmuladd.f32(float %266, float %267, float %268)
store float %269, float* %24
%270 = load float, float* %17
%271 = load float, float* %20
%272 = load float, float* %28
%273 = call float @llvm.fmuladd.f32(float %270, float %271, float %272)
store float %273, float* %28
%274 = load float, float* %18
%275 = load float, float* %20
%276 = load float, float* %32
%277 = call float @llvm.fmuladd.f32(float %274, float %275, float %276)
store float %277, float* %32
%278 = load float, float* %19
%279 = load float, float* %20
%280 = load float, float* %36
%281 = call float @llvm.fmuladd.f32(float %278, float %279, float %280)
store float %281, float* %36
%282 = load float, float* %16
%283 = load float, float* %21
%284 = load float, float* %25
%285 = call float @llvm.fmuladd.f32(float %282, float %283, float %284)
store float %285, float* %25
%286 = load float, float* %17
%287 = load float, float* %21
%288 = load float, float* %29
%289 = call float @llvm.fmuladd.f32(float %286, float %287, float %288)
store float %289, float* %29
%290 = load float, float* %18
%291 = load float, float* %21
%292 = load float, float* %33
%293 = call float @llvm.fmuladd.f32(float %290, float %291, float %292)
store float %293, float* %33
%294 = load float, float* %19
%295 = load float, float* %21
%296 = load float, float* %37
%297 = call float @llvm.fmuladd.f32(float %294, float %295, float %296)
store float %297, float* %37
%298 = load float, float* %16
%299 = load float, float* %22
%300 = load float, float* %26
%301 = call float @llvm.fmuladd.f32(float %298, float %299, float %300)
store float %301, float* %26
%302 = load float, float* %17
%303 = load float, float* %22
%304 = load float, float* %30
%305 = call float @llvm.fmuladd.f32(float %302, float %303, float %304)
store float %305, float* %30
%306 = load float, float* %18
%307 = load float, float* %22
%308 = load float, float* %34
%309 = call float @llvm.fmuladd.f32(float %306, float %307, float %308)
store float %309, float* %34
%310 = load float, float* %19
%311 = load float, float* %22
%312 = load float, float* %38
%313 = call float @llvm.fmuladd.f32(float %310, float %311, float %312)
store float %313, float* %38
%314 = load float, float* %16
%315 = load float, float* %23
%316 = load float, float* %27
%317 = call float @llvm.fmuladd.f32(float %314, float %315, float %316)
store float %317, float* %27
%318 = load float, float* %17
%319 = load float, float* %23
%320 = load float, float* %31
%321 = call float @llvm.fmuladd.f32(float %318, float %319, float %320)
store float %321, float* %31
%322 = load float, float* %18
%323 = load float, float* %23
%324 = load float, float* %35
%325 = call float @llvm.fmuladd.f32(float %322, float %323, float %324)
store float %325, float* %35
%326 = load float, float* %19
%327 = load float, float* %23
%328 = load float, float* %39
%329 = call float @llvm.fmuladd.f32(float %326, float %327, float %328)
store float %329, float* %39
%330 = load float*, float** %8
%331 = getelementptr inbounds float, float* %330, i64 12
%332 = load float, float* %331
store float %332, float* %16
%333 = load float*, float** %8
%334 = getelementptr inbounds float, float* %333, i64 13
%335 = load float, float* %334
store float %335, float* %17
%336 = load float*, float** %8
%337 = getelementptr inbounds float, float* %336, i64 14
%338 = load float, float* %337
store float %338, float* %18
%339 = load float*, float** %8
%340 = getelementptr inbounds float, float* %339, i64 15
%341 = load float, float* %340
store float %341, float* %19
%342 = load float*, float** %9
%343 = getelementptr inbounds float, float* %342, i64 12
%344 = load float, float* %343
store float %344, float* %20
%345 = load float*, float** %9
%346 = getelementptr inbounds float, float* %345, i64 13
%347 = load float, float* %346
store float %347, float* %21
%348 = load float*, float** %9
%349 = getelementptr inbounds float, float* %348, i64 14
%350 = load float, float* %349
store float %350, float* %22
%351 = load float*, float** %9
%352 = getelementptr inbounds float, float* %351, i64 15
%353 = load float, float* %352
store float %353, float* %23
%354 = load float, float* %16
%355 = load float, float* %20
%356 = load float, float* %24
%357 = call float @llvm.fmuladd.f32(float %354, float %355, float %356)
store float %357, float* %24
%358 = load float, float* %17
%359 = load float, float* %20
%360 = load float, float* %28
%361 = call float @llvm.fmuladd.f32(float %358, float %359, float %360)
store float %361, float* %28
%362 = load float, float* %18
%363 = load float, float* %20
%364 = load float, float* %32
%365 = call float @llvm.fmuladd.f32(float %362, float %363, float %364)
store float %365, float* %32
%366 = load float, float* %19
%367 = load float, float* %20
%368 = load float, float* %36
%369 = call float @llvm.fmuladd.f32(float %366, float %367, float %368)
store float %369, float* %36
%370 = load float, float* %16
%371 = load float, float* %21
%372 = load float, float* %25
%373 = call float @llvm.fmuladd.f32(float %370, float %371, float %372)
store float %373, float* %25
%374 = load float, float* %17
%375 = load float, float* %21
%376 = load float, float* %29
%377 = call float @llvm.fmuladd.f32(float %374, float %375, float %376)
store float %377, float* %29
%378 = load float, float* %18
%379 = load float, float* %21
%380 = load float, float* %33
%381 = call float @llvm.fmuladd.f32(float %378, float %379, float %380)
store float %381, float* %33
%382 = load float, float* %19
%383 = load float, float* %21
%384 = load float, float* %37
%385 = call float @llvm.fmuladd.f32(float %382, float %383, float %384)
store float %385, float* %37
%386 = load float, float* %16
%387 = load float, float* %22
%388 = load float, float* %26
%389 = call float @llvm.fmuladd.f32(float %386, float %387, float %388)
store float %389, float* %26
%390 = load float, float* %17
%391 = load float, float* %22
%392 = load float, float* %30
%393 = call float @llvm.fmuladd.f32(float %390, float %391, float %392)
store float %393, float* %30
%394 = load float, float* %18
%395 = load float, float* %22
%396 = load float, float* %34
%397 = call float @llvm.fmuladd.f32(float %394, float %395, float %396)
store float %397, float* %34
%398 = load float, float* %19
%399 = load float, float* %22
%400 = load float, float* %38
%401 = call float @llvm.fmuladd.f32(float %398, float %399, float %400)
store float %401, float* %38
%402 = load float, float* %16
%403 = load float, float* %23
%404 = load float, float* %27
%405 = call float @llvm.fmuladd.f32(float %402, float %403, float %404)
store float %405, float* %27
%406 = load float, float* %17
%407 = load float, float* %23
%408 = load float, float* %31
%409 = call float @llvm.fmuladd.f32(float %406, float %407, float %408)
store float %409, float* %31
%410 = load float, float* %18
%411 = load float, float* %23
%412 = load float, float* %35
%413 = call float @llvm.fmuladd.f32(float %410, float %411, float %412)
store float %413, float* %35
%414 = load float, float* %19
%415 = load float, float* %23
%416 = load float, float* %39
%417 = call float @llvm.fmuladd.f32(float %414, float %415, float %416)
store float %417, float* %39
%418 = load float*, float** %8
%419 = getelementptr inbounds float, float* %418, i64 16
store float* %419, float** %8
%420 = load float*, float** %9
%421 = getelementptr inbounds float, float* %420, i64 16
store float* %421, float** %9
br label %422
422: ; preds = %65
%423 = load i32, i32* %15
%424 = add nsw i32 %423, 4
store i32 %424, i32* %15
br label %60
425: ; preds = %60
br label %426
426: ; preds = %523, %425
%427 = load i32, i32* %15
%428 = load i32, i32* %7
%429 = icmp slt i32 %427, %428
br i1 %429, label %430, label %526
430: ; preds = %426
%431 = load float*, float** %8
%432 = getelementptr inbounds float, float* %431, i64 0
%433 = load float, float* %432
store float %433, float* %16
%434 = load float*, float** %8
%435 = getelementptr inbounds float, float* %434, i64 1
%436 = load float, float* %435
store float %436, float* %17
%437 = load float*, float** %8
%438 = getelementptr inbounds float, float* %437, i64 2
%439 = load float, float* %438
store float %439, float* %18
%440 = load float*, float** %8
%441 = getelementptr inbounds float, float* %440, i64 3
%442 = load float, float* %441
store float %442, float* %19
%443 = load float*, float** %9
%444 = getelementptr inbounds float, float* %443, i64 0
%445 = load float, float* %444
store float %445, float* %20
%446 = load float*, float** %9
%447 = getelementptr inbounds float, float* %446, i64 1
%448 = load float, float* %447
store float %448, float* %21
%449 = load float*, float** %9
%450 = getelementptr inbounds float, float* %449, i64 2
%451 = load float, float* %450
store float %451, float* %22
%452 = load float*, float** %9
%453 = getelementptr inbounds float, float* %452, i64 3
%454 = load float, float* %453
store float %454, float* %23
%455 = load float, float* %16
%456 = load float, float* %20
%457 = load float, float* %24
%458 = call float @llvm.fmuladd.f32(float %455, float %456, float %457)
store float %458, float* %24
%459 = load float, float* %17
%460 = load float, float* %20
%461 = load float, float* %28
%462 = call float @llvm.fmuladd.f32(float %459, float %460, float %461)
store float %462, float* %28
%463 = load float, float* %18
%464 = load float, float* %20
%465 = load float, float* %32
%466 = call float @llvm.fmuladd.f32(float %463, float %464, float %465)
store float %466, float* %32
%467 = load float, float* %19
%468 = load float, float* %20
%469 = load float, float* %36
%470 = call float @llvm.fmuladd.f32(float %467, float %468, float %469)
store float %470, float* %36
%471 = load float, float* %16
%472 = load float, float* %21
%473 = load float, float* %25
%474 = call float @llvm.fmuladd.f32(float %471, float %472, float %473)
store float %474, float* %25
%475 = load float, float* %17
%476 = load float, float* %21
%477 = load float, float* %29
%478 = call float @llvm.fmuladd.f32(float %475, float %476, float %477)
store float %478, float* %29
%479 = load float, float* %18
%480 = load float, float* %21
%481 = load float, float* %33
%482 = call float @llvm.fmuladd.f32(float %479, float %480, float %481)
store float %482, float* %33
%483 = load float, float* %19
%484 = load float, float* %21
%485 = load float, float* %37
%486 = call float @llvm.fmuladd.f32(float %483, float %484, float %485)
store float %486, float* %37
%487 = load float, float* %16
%488 = load float, float* %22
%489 = load float, float* %26
%490 = call float @llvm.fmuladd.f32(float %487, float %488, float %489)
store float %490, float* %26
%491 = load float, float* %17
%492 = load float, float* %22
%493 = load float, float* %30
%494 = call float @llvm.fmuladd.f32(float %491, float %492, float %493)
store float %494, float* %30
%495 = load float, float* %18
%496 = load float, float* %22
%497 = load float, float* %34
%498 = call float @llvm.fmuladd.f32(float %495, float %496, float %497)
store float %498, float* %34
%499 = load float, float* %19
%500 = load float, float* %22
%501 = load float, float* %38
%502 = call float @llvm.fmuladd.f32(float %499, float %500, float %501)
store float %502, float* %38
%503 = load float, float* %16
%504 = load float, float* %23
%505 = load float, float* %27
%506 = call float @llvm.fmuladd.f32(float %503, float %504, float %505)
store float %506, float* %27
%507 = load float, float* %17
%508 = load float, float* %23
%509 = load float, float* %31
%510 = call float @llvm.fmuladd.f32(float %507, float %508, float %509)
store float %510, float* %31
%511 = load float, float* %18
%512 = load float, float* %23
%513 = load float, float* %35
%514 = call float @llvm.fmuladd.f32(float %511, float %512, float %513)
store float %514, float* %35
%515 = load float, float* %19
%516 = load float, float* %23
%517 = load float, float* %39
%518 = call float @llvm.fmuladd.f32(float %515, float %516, float %517)
store float %518, float* %39
%519 = load float*, float** %8
%520 = getelementptr inbounds float, float* %519, i64 4
store float* %520, float** %8
%521 = load float*, float** %9
%522 = getelementptr inbounds float, float* %521, i64 4
store float* %522, float** %9
br label %523
523: ; preds = %430
%524 = load i32, i32* %15
%525 = add nsw i32 %524, 1
store i32 %525, i32* %15
br label %426
526: ; preds = %426
%527 = load i32, i32* %12
%528 = icmp eq i32 %527, 0
br i1 %528, label %529, label %578
529: ; preds = %526
%530 = load float, float* %24
%531 = load float*, float** %11
%532 = getelementptr inbounds float, float* %531, i64 0
store float %530, float* %532
%533 = load float, float* %28
%534 = load float*, float** %11
%535 = getelementptr inbounds float, float* %534, i64 1
store float %533, float* %535
%536 = load float, float* %32
%537 = load float*, float** %11
%538 = getelementptr inbounds float, float* %537, i64 2
store float %536, float* %538
%539 = load float, float* %36
%540 = load float*, float** %11
%541 = getelementptr inbounds float, float* %540, i64 3
store float %539, float* %541
%542 = load float, float* %25
%543 = load float*, float** %11
%544 = getelementptr inbounds float, float* %543, i64 4
store float %542, float* %544
%545 = load float, float* %29
%546 = load float*, float** %11
%547 = getelementptr inbounds float, float* %546, i64 5
store float %545, float* %547
%548 = load float, float* %33
%549 = load float*, float** %11
%550 = getelementptr inbounds float, float* %549, i64 6
store float %548, float* %550
%551 = load float, float* %37
%552 = load float*, float** %11
%553 = getelementptr inbounds float, float* %552, i64 7
store float %551, float* %553
%554 = load float, float* %26
%555 = load float*, float** %11
%556 = getelementptr inbounds float, float* %555, i64 8
store float %554, float* %556
%557 = load float, float* %30
%558 = load float*, float** %11
%559 = getelementptr inbounds float, float* %558, i64 9
store float %557, float* %559
%560 = load float, float* %34
%561 = load float*, float** %11
%562 = getelementptr inbounds float, float* %561, i64 10
store float %560, float* %562
%563 = load float, float* %38
%564 = load float*, float** %11
%565 = getelementptr inbounds float, float* %564, i64 11
store float %563, float* %565
%566 = load float, float* %27
%567 = load float*, float** %11
%568 = getelementptr inbounds float, float* %567, i64 12
store float %566, float* %568
%569 = load float, float* %31
%570 = load float*, float** %11
%571 = getelementptr inbounds float, float* %570, i64 13
store float %569, float* %571
%572 = load float, float* %35
%573 = load float*, float** %11
%574 = getelementptr inbounds float, float* %573, i64 14
store float %572, float* %574
%575 = load float, float* %39
%576 = load float*, float** %11
%577 = getelementptr inbounds float, float* %576, i64 15
store float %575, float* %577
br label %776
578: ; preds = %526
%579 = load float*, float** %10
%580 = getelementptr inbounds float, float* %579, i64 0
%581 = load float, float* %580
store float %581, float* %40
%582 = load float*, float** %10
%583 = getelementptr inbounds float, float* %582, i64 1
%584 = load float, float* %583
store float %584, float* %44
%585 = load float*, float** %10
%586 = getelementptr inbounds float, float* %585, i64 2
%587 = load float, float* %586
store float %587, float* %48
%588 = load float*, float** %10
%589 = getelementptr inbounds float, float* %588, i64 3
%590 = load float, float* %589
store float %590, float* %52
%591 = load float*, float** %10
%592 = getelementptr inbounds float, float* %591, i64 4
%593 = load float, float* %592
store float %593, float* %41
%594 = load float*, float** %10
%595 = getelementptr inbounds float, float* %594, i64 5
%596 = load float, float* %595
store float %596, float* %45
%597 = load float*, float** %10
%598 = getelementptr inbounds float, float* %597, i64 6
%599 = load float, float* %598
store float %599, float* %49
%600 = load float*, float** %10
%601 = getelementptr inbounds float, float* %600, i64 7
%602 = load float, float* %601
store float %602, float* %53
%603 = load float*, float** %10
%604 = getelementptr inbounds float, float* %603, i64 8
%605 = load float, float* %604
store float %605, float* %42
%606 = load float*, float** %10
%607 = getelementptr inbounds float, float* %606, i64 9
%608 = load float, float* %607
store float %608, float* %46
%609 = load float*, float** %10
%610 = getelementptr inbounds float, float* %609, i64 10
%611 = load float, float* %610
store float %611, float* %50
%612 = load float*, float** %10
%613 = getelementptr inbounds float, float* %612, i64 11
%614 = load float, float* %613
store float %614, float* %54
%615 = load float*, float** %10
%616 = getelementptr inbounds float, float* %615, i64 12
%617 = load float, float* %616
store float %617, float* %43
%618 = load float*, float** %10
%619 = getelementptr inbounds float, float* %618, i64 13
%620 = load float, float* %619
store float %620, float* %47
%621 = load float*, float** %10
%622 = getelementptr inbounds float, float* %621, i64 14
%623 = load float, float* %622
store float %623, float* %51
%624 = load float*, float** %10
%625 = getelementptr inbounds float, float* %624, i64 15
%626 = load float, float* %625
store float %626, float* %55
%627 = load i32, i32* %12
%628 = icmp eq i32 %627, 1
br i1 %628, label %629, label %678
629: ; preds = %578
%630 = load float, float* %24
%631 = load float, float* %40
%632 = fadd float %631, %630
store float %632, float* %40
%633 = load float, float* %28
%634 = load float, float* %44
%635 = fadd float %634, %633
store float %635, float* %44
%636 = load float, float* %32
%637 = load float, float* %48
%638 = fadd float %637, %636
store float %638, float* %48
%639 = load float, float* %36
%640 = load float, float* %52
%641 = fadd float %640, %639
store float %641, float* %52
%642 = load float, float* %25
%643 = load float, float* %41
%644 = fadd float %643, %642
store float %644, float* %41
%645 = load float, float* %29
%646 = load float, float* %45
%647 = fadd float %646, %645
store float %647, float* %45
%648 = load float, float* %33
%649 = load float, float* %49
%650 = fadd float %649, %648
store float %650, float* %49
%651 = load float, float* %37
%652 = load float, float* %53
%653 = fadd float %652, %651
store float %653, float* %53
%654 = load float, float* %26
%655 = load float, float* %42
%656 = fadd float %655, %654
store float %656, float* %42
%657 = load float, float* %30
%658 = load float, float* %46
%659 = fadd float %658, %657
store float %659, float* %46
%660 = load float, float* %34
%661 = load float, float* %50
%662 = fadd float %661, %660
store float %662, float* %50
%663 = load float, float* %38
%664 = load float, float* %54
%665 = fadd float %664, %663
store float %665, float* %54
%666 = load float, float* %27
%667 = load float, float* %43
%668 = fadd float %667, %666
store float %668, float* %43
%669 = load float, float* %31
%670 = load float, float* %47
%671 = fadd float %670, %669
store float %671, float* %47
%672 = load float, float* %35
%673 = load float, float* %51
%674 = fadd float %673, %672
store float %674, float* %51
%675 = load float, float* %39
%676 = load float, float* %55
%677 = fadd float %676, %675
store float %677, float* %55
br label %727
678: ; preds = %578
%679 = load float, float* %24
%680 = load float, float* %40
%681 = fsub float %680, %679
store float %681, float* %40
%682 = load float, float* %28
%683 = load float, float* %44
%684 = fsub float %683, %682
store float %684, float* %44
%685 = load float, float* %32
%686 = load float, float* %48
%687 = fsub float %686, %685
store float %687, float* %48
%688 = load float, float* %36
%689 = load float, float* %52
%690 = fsub float %689, %688
store float %690, float* %52
%691 = load float, float* %25
%692 = load float, float* %41
%693 = fsub float %692, %691
store float %693, float* %41
%694 = load float, float* %29
%695 = load float, float* %45
%696 = fsub float %695, %694
store float %696, float* %45
%697 = load float, float* %33
%698 = load float, float* %49
%699 = fsub float %698, %697
store float %699, float* %49
%700 = load float, float* %37
%701 = load float, float* %53
%702 = fsub float %701, %700
store float %702, float* %53
%703 = load float, float* %26
%704 = load float, float* %42
%705 = fsub float %704, %703
store float %705, float* %42
%706 = load float, float* %30
%707 = load float, float* %46
%708 = fsub float %707, %706
store float %708, float* %46
%709 = load float, float* %34
%710 = load float, float* %50
%711 = fsub float %710, %709
store float %711, float* %50
%712 = load float, float* %38
%713 = load float, float* %54
%714 = fsub float %713, %712
store float %714, float* %54
%715 = load float, float* %27
%716 = load float, float* %43
%717 = fsub float %716, %715
store float %717, float* %43
%718 = load float, float* %31
%719 = load float, float* %47
%720 = fsub float %719, %718
store float %720, float* %47
%721 = load float, float* %35
%722 = load float, float* %51
%723 = fsub float %722, %721
store float %723, float* %51
%724 = load float, float* %39
%725 = load float, float* %55
%726 = fsub float %725, %724
store float %726, float* %55
br label %727
727: ; preds = %678, %629
%728 = load float, float* %40
%729 = load float*, float** %11
%730 = getelementptr inbounds float, float* %729, i64 0
store float %728, float* %730
%731 = load float, float* %44
%732 = load float*, float** %11
%733 = getelementptr inbounds float, float* %732, i64 1
store float %731, float* %733
%734 = load float, float* %48
%735 = load float*, float** %11
%736 = getelementptr inbounds float, float* %735, i64 2
store float %734, float* %736
%737 = load float, float* %52
%738 = load float*, float** %11
%739 = getelementptr inbounds float, float* %738, i64 3
store float %737, float* %739
%740 = load float, float* %41
%741 = load float*, float** %11
%742 = getelementptr inbounds float, float* %741, i64 4
store float %740, float* %742
%743 = load float, float* %45
%744 = load float*, float** %11
%745 = getelementptr inbounds float, float* %744, i64 5
store float %743, float* %745
%746 = load float, float* %49
%747 = load float*, float** %11
%748 = getelementptr inbounds float, float* %747, i64 6
store float %746, float* %748
%749 = load float, float* %53
%750 = load float*, float** %11
%751 = getelementptr inbounds float, float* %750, i64 7
store float %749, float* %751
%752 = load float, float* %42
%753 = load float*, float** %11
%754 = getelementptr inbounds float, float* %753, i64 8
store float %752, float* %754
%755 = load float, float* %46
%756 = load float*, float** %11
%757 = getelementptr inbounds float, float* %756, i64 9
store float %755, float* %757
%758 = load float, float* %50
%759 = load float*, float** %11
%760 = getelementptr inbounds float, float* %759, i64 10
store float %758, float* %760
%761 = load float, float* %54
%762 = load float*, float** %11
%763 = getelementptr inbounds float, float* %762, i64 11
store float %761, float* %763
%764 = load float, float* %43
%765 = load float*, float** %11
%766 = getelementptr inbounds float, float* %765, i64 12
store float %764, float* %766
%767 = load float, float* %47
%768 = load float*, float** %11
%769 = getelementptr inbounds float, float* %768, i64 13
store float %767, float* %769
%770 = load float, float* %51
%771 = load float*, float** %11
%772 = getelementptr inbounds float, float* %771, i64 14
store float %770, float* %772
%773 = load float, float* %55
%774 = load float*, float** %11
%775 = getelementptr inbounds float, float* %774, i64 15
store float %773, float* %775
br label %776
776: ; preds = %58, %727, %529
ret void
}

LLVM IR (-O2):
define void @kernel_sgemm_nt_4x4_lib4(i32 %0, float* nocapture %1, float* nocapture %2, float* nocapture %3, float* writeonly %4, i32 %5) {
%7 = icmp slt i32 %0, 1
br i1 %7, label %219, label %8
8: ; preds = %6
%9 = add nsw i32 %0, -3
%10 = icmp ugt i32 %0, 3
br i1 %10, label %38, label %29
11: ; preds = %38
%12 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %65, <4 x float> %45)
%13 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %88, <4 x float> %12)
%14 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %111, <4 x float> %13)
%15 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %134, <4 x float> %14)
%16 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %62, <4 x float> %44)
%17 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %85, <4 x float> %16)
%18 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %108, <4 x float> %17)
%19 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %131, <4 x float> %18)
%20 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %59, <4 x float> %43)
%21 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %82, <4 x float> %20)
%22 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %105, <4 x float> %21)
%23 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %128, <4 x float> %22)
%24 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %56, <4 x float> %42)
%25 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %79, <4 x float> %24)
%26 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %102, <4 x float> %25)
%27 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %125, <4 x float> %26)
%28 = and i32 %0, -4
br label %29
29: ; preds = %11, %8
%30 = phi float* [ %2, %8 ], [ %137, %11 ]
%31 = phi float* [ %1, %8 ], [ %136, %11 ]
%32 = phi i32 [ 0, %8 ], [ %28, %11 ]
%33 = phi <4 x float> [ zeroinitializer, %8 ], [ %27, %11 ]
%34 = phi <4 x float> [ zeroinitializer, %8 ], [ %23, %11 ]
%35 = phi <4 x float> [ zeroinitializer, %8 ], [ %19, %11 ]
%36 = phi <4 x float> [ zeroinitializer, %8 ], [ %15, %11 ]
%37 = icmp slt i32 %32, %0
br i1 %37, label %140, label %178
38: ; preds = %8, %38
%39 = phi i32 [ %138, %38 ], [ 0, %8 ]
%40 = phi float* [ %136, %38 ], [ %1, %8 ]
%41 = phi float* [ %137, %38 ], [ %2, %8 ]
%42 = phi <4 x float> [ %126, %38 ], [ zeroinitializer, %8 ]
%43 = phi <4 x float> [ %129, %38 ], [ zeroinitializer, %8 ]
%44 = phi <4 x float> [ %132, %38 ], [ zeroinitializer, %8 ]
%45 = phi <4 x float> [ %135, %38 ], [ zeroinitializer, %8 ]
%46 = bitcast float* %40 to <4 x float>*
%47 = load <4 x float>, <4 x float>* %46
%48 = load float, float* %41
%49 = getelementptr inbounds float, float* %41, i64 1
%50 = load float, float* %49
%51 = getelementptr inbounds float, float* %41, i64 2
%52 = load float, float* %51
%53 = getelementptr inbounds float, float* %41, i64 3
%54 = load float, float* %53
%55 = insertelement <4 x float> poison, float %48, i64 0
%56 = shufflevector <4 x float> %55, <4 x float> poison, <4 x i32> zeroinitializer
%57 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %56, <4 x float> %42)
%58 = insertelement <4 x float> poison, float %50, i64 0
%59 = shufflevector <4 x float> %58, <4 x float> poison, <4 x i32> zeroinitializer
%60 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %59, <4 x float> %43)
%61 = insertelement <4 x float> poison, float %52, i64 0
%62 = shufflevector <4 x float> %61, <4 x float> poison, <4 x i32> zeroinitializer
%63 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %62, <4 x float> %44)
%64 = insertelement <4 x float> poison, float %54, i64 0
%65 = shufflevector <4 x float> %64, <4 x float> poison, <4 x i32> zeroinitializer
%66 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %47, <4 x float> %65, <4 x float> %45)
%67 = getelementptr inbounds float, float* %40, i64 4
%68 = bitcast float* %67 to <4 x float>*
%69 = load <4 x float>, <4 x float>* %68
%70 = getelementptr inbounds float, float* %41, i64 4
%71 = load float, float* %70
%72 = getelementptr inbounds float, float* %41, i64 5
%73 = load float, float* %72
%74 = getelementptr inbounds float, float* %41, i64 6
%75 = load float, float* %74
%76 = getelementptr inbounds float, float* %41, i64 7
%77 = load float, float* %76
%78 = insertelement <4 x float> poison, float %71, i64 0
%79 = shufflevector <4 x float> %78, <4 x float> poison, <4 x i32> zeroinitializer
%80 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %79, <4 x float> %57)
%81 = insertelement <4 x float> poison, float %73, i64 0
%82 = shufflevector <4 x float> %81, <4 x float> poison, <4 x i32> zeroinitializer
%83 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %82, <4 x float> %60)
%84 = insertelement <4 x float> poison, float %75, i64 0
%85 = shufflevector <4 x float> %84, <4 x float> poison, <4 x i32> zeroinitializer
%86 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %85, <4 x float> %63)
%87 = insertelement <4 x float> poison, float %77, i64 0
%88 = shufflevector <4 x float> %87, <4 x float> poison, <4 x i32> zeroinitializer
%89 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %69, <4 x float> %88, <4 x float> %66)
%90 = getelementptr inbounds float, float* %40, i64 8
%91 = bitcast float* %90 to <4 x float>*
%92 = load <4 x float>, <4 x float>* %91
%93 = getelementptr inbounds float, float* %41, i64 8
%94 = load float, float* %93
%95 = getelementptr inbounds float, float* %41, i64 9
%96 = load float, float* %95
%97 = getelementptr inbounds float, float* %41, i64 10
%98 = load float, float* %97
%99 = getelementptr inbounds float, float* %41, i64 11
%100 = load float, float* %99
%101 = insertelement <4 x float> poison, float %94, i64 0
%102 = shufflevector <4 x float> %101, <4 x float> poison, <4 x i32> zeroinitializer
%103 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %102, <4 x float> %80)
%104 = insertelement <4 x float> poison, float %96, i64 0
%105 = shufflevector <4 x float> %104, <4 x float> poison, <4 x i32> zeroinitializer
%106 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %105, <4 x float> %83)
%107 = insertelement <4 x float> poison, float %98, i64 0
%108 = shufflevector <4 x float> %107, <4 x float> poison, <4 x i32> zeroinitializer
%109 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %108, <4 x float> %86)
%110 = insertelement <4 x float> poison, float %100, i64 0
%111 = shufflevector <4 x float> %110, <4 x float> poison, <4 x i32> zeroinitializer
%112 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %92, <4 x float> %111, <4 x float> %89)
%113 = getelementptr inbounds float, float* %40, i64 12
%114 = bitcast float* %113 to <4 x float>*
%115 = load <4 x float>, <4 x float>* %114
%116 = getelementptr inbounds float, float* %41, i64 12
%117 = load float, float* %116
%118 = getelementptr inbounds float, float* %41, i64 13
%119 = load float, float* %118
%120 = getelementptr inbounds float, float* %41, i64 14
%121 = load float, float* %120
%122 = getelementptr inbounds float, float* %41, i64 15
%123 = load float, float* %122
%124 = insertelement <4 x float> poison, float %117, i64 0
%125 = shufflevector <4 x float> %124, <4 x float> poison, <4 x i32> zeroinitializer
%126 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %125, <4 x float> %103)
%127 = insertelement <4 x float> poison, float %119, i64 0
%128 = shufflevector <4 x float> %127, <4 x float> poison, <4 x i32> zeroinitializer
%129 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %128, <4 x float> %106)
%130 = insertelement <4 x float> poison, float %121, i64 0
%131 = shufflevector <4 x float> %130, <4 x float> poison, <4 x i32> zeroinitializer
%132 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %131, <4 x float> %109)
%133 = insertelement <4 x float> poison, float %123, i64 0
%134 = shufflevector <4 x float> %133, <4 x float> poison, <4 x i32> zeroinitializer
%135 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %115, <4 x float> %134, <4 x float> %112)
%136 = getelementptr inbounds float, float* %40, i64 16
%137 = getelementptr inbounds float, float* %41, i64 16
%138 = add nuw nsw i32 %39, 4
%139 = icmp slt i32 %138, %9
br i1 %139, label %38, label %11
140: ; preds = %29, %140
%141 = phi i32 [ %171, %140 ], [ %32, %29 ]
%142 = phi float* [ %169, %140 ], [ %31, %29 ]
%143 = phi float* [ %170, %140 ], [ %30, %29 ]
%144 = phi <4 x float> [ %159, %140 ], [ %33, %29 ]
%145 = phi <4 x float> [ %162, %140 ], [ %34, %29 ]
%146 = phi <4 x float> [ %165, %140 ], [ %35, %29 ]
%147 = phi <4 x float> [ %168, %140 ], [ %36, %29 ]
%148 = bitcast float* %142 to <4 x float>*
%149 = load <4 x float>, <4 x float>* %148
%150 = load float, float* %143
%151 = getelementptr inbounds float, float* %143, i64 1
%152 = load float, float* %151
%153 = getelementptr inbounds float, float* %143, i64 2
%154 = load float, float* %153
%155 = getelementptr inbounds float, float* %143, i64 3
%156 = load float, float* %155
%157 = insertelement <4 x float> poison, float %150, i64 0
%158 = shufflevector <4 x float> %157, <4 x float> poison, <4 x i32> zeroinitializer
%159 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %158, <4 x float> %144)
%160 = insertelement <4 x float> poison, float %152, i64 0
%161 = shufflevector <4 x float> %160, <4 x float> poison, <4 x i32> zeroinitializer
%162 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %161, <4 x float> %145)
%163 = insertelement <4 x float> poison, float %154, i64 0
%164 = shufflevector <4 x float> %163, <4 x float> poison, <4 x i32> zeroinitializer
%165 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %164, <4 x float> %146)
%166 = insertelement <4 x float> poison, float %156, i64 0
%167 = shufflevector <4 x float> %166, <4 x float> poison, <4 x i32> zeroinitializer
%168 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %167, <4 x float> %147)
%169 = getelementptr inbounds float, float* %142, i64 4
%170 = getelementptr inbounds float, float* %143, i64 4
%171 = add nuw nsw i32 %141, 1
%172 = icmp eq i32 %171, %0
br i1 %172, label %173, label %140
173: ; preds = %140
%174 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %167, <4 x float> %147)
%175 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %164, <4 x float> %146)
%176 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %161, <4 x float> %145)
%177 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %149, <4 x float> %158, <4 x float> %144)
br label %178
178: ; preds = %173, %29
%179 = phi <4 x float> [ %33, %29 ], [ %177, %173 ]
%180 = phi <4 x float> [ %34, %29 ], [ %176, %173 ]
%181 = phi <4 x float> [ %35, %29 ], [ %175, %173 ]
%182 = phi <4 x float> [ %36, %29 ], [ %174, %173 ]
%183 = icmp eq i32 %5, 0
br i1 %183, label %207, label %184
184: ; preds = %178
%185 = bitcast float* %3 to <4 x float>*
%186 = load <4 x float>, <4 x float>* %185
%187 = getelementptr inbounds float, float* %3, i64 4
%188 = bitcast float* %187 to <4 x float>*
%189 = load <4 x float>, <4 x float>* %188
%190 = getelementptr inbounds float, float* %3, i64 8
%191 = bitcast float* %190 to <4 x float>*
%192 = load <4 x float>, <4 x float>* %191
%193 = getelementptr inbounds float, float* %3, i64 12
%194 = bitcast float* %193 to <4 x float>*
%195 = load <4 x float>, <4 x float>* %194
%196 = icmp eq i32 %5, 1
br i1 %196, label %197, label %202
197: ; preds = %184
%198 = fadd <4 x float> %179, %186
%199 = fadd <4 x float> %180, %189
%200 = fadd <4 x float> %181, %192
%201 = fadd <4 x float> %182, %195
br label %207
202: ; preds = %184
%203 = fsub <4 x float> %186, %179
%204 = fsub <4 x float> %189, %180
%205 = fsub <4 x float> %192, %181
%206 = fsub <4 x float> %195, %182
br label %207
207: ; preds = %197, %202, %178
%208 = phi <4 x float> [ %179, %178 ], [ %198, %197 ], [ %203, %202 ]
%209 = phi <4 x float> [ %180, %178 ], [ %199, %197 ], [ %204, %202 ]
%210 = phi <4 x float> [ %181, %178 ], [ %200, %197 ], [ %205, %202 ]
%211 = phi <4 x float> [ %182, %178 ], [ %201, %197 ], [ %206, %202 ]
%212 = bitcast float* %4 to <4 x float>*
store <4 x float> %208, <4 x float>* %212
%213 = getelementptr inbounds float, float* %4, i64 4
%214 = bitcast float* %213 to <4 x float>*
store <4 x float> %209, <4 x float>* %214
%215 = getelementptr inbounds float, float* %4, i64 8
%216 = bitcast float* %215 to <4 x float>*
store <4 x float> %210, <4 x float>* %216
%217 = getelementptr inbounds float, float* %4, i64 12
%218 = bitcast float* %217 to <4 x float>*
store <4 x float> %211, <4 x float>* %218
br label %219
219: ; preds = %207, %6
ret void
}