void s_cvt_pmat2mat(int row, int col, int offset, int bs, float *pA, int sda,
                    float *A, int lda) {
  int i, ii, jj;
  int row0 = (bs - offset % bs) % bs;
  float *ptr_pA;
  jj = 0;
  for (; jj < col; jj++) {
    ptr_pA = pA + jj * bs;
    ii = 0;
    if (row0 > 0) {
      for (; ii < row0; ii++) {
        A[ii + lda * jj] = ptr_pA[0];
        ptr_pA++;
      }
      ptr_pA += (sda - 1) * bs;
    }
    for (; ii < row - bs + 1; ii += bs) {
      i = 0;
      for (; i < bs; i++) {
        A[i + ii + lda * jj] = ptr_pA[0];
        ptr_pA++;
      }
      ptr_pA += (sda - 1) * bs;
    }
    for (; ii < row; ii++) {
      A[ii + lda * jj] = ptr_pA[0];
      ptr_pA++;
    }
  }
}


x86 assembly (clang, -O0):
<s_cvt_pmat2mat>:
push   %rbp
mov    %rsp,%rbp
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8,-0x18(%rbp)
mov    %r9d,-0x1c(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0x3c(%rbp),%eax
sub    %edx,%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,-0x2c(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    12cd <s_cvt_pmat2mat+0x1cd>
mov    -0x18(%rbp),%rax
mov    -0x28(%rbp),%ecx
imul   -0x10(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jle    11dc <s_cvt_pmat2mat+0xdc>
jmp    117a <s_cvt_pmat2mat+0x7a>
mov    -0x24(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    11c0 <s_cvt_pmat2mat+0xc0>
mov    -0x38(%rbp),%rax
movss  (%rax),%xmm0
mov    0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    0x18(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x38(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    117a <s_cvt_pmat2mat+0x7a>
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    11e1 <s_cvt_pmat2mat+0xe1>
mov    -0x24(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    -0x10(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    126f <s_cvt_pmat2mat+0x16f>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1245 <s_cvt_pmat2mat+0x145>
mov    -0x38(%rbp),%rax
movss  (%rax),%xmm0
mov    0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    -0x24(%rbp),%ecx
mov    0x18(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x38(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11fc <s_cvt_pmat2mat+0xfc>
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    11e1 <s_cvt_pmat2mat+0xe1>
jmp    1274 <s_cvt_pmat2mat+0x174>
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    12ba <s_cvt_pmat2mat+0x1ba>
mov    -0x38(%rbp),%rax
movss  (%rax),%xmm0
mov    0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    0x18(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x38(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x38(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1274 <s_cvt_pmat2mat+0x174>
jmp    12bf <s_cvt_pmat2mat+0x1bf>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    113f <s_cvt_pmat2mat+0x3f>
pop    %rbp
ret

x86 assembly (clang, -O2):
<s_cvt_pmat2mat>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xb0,%rsp
mov    %r8,-0x50(%rsp)
mov    %edx,%eax
mov    %edi,-0x80(%rsp)
cltd
idiv   %ecx
mov    %ecx,%eax
sub    %edx,%eax
cltd
idiv   %ecx
test   %esi,%esi
jle    1907 <s_cvt_pmat2mat+0x807>
mov    %edx,%r14d
movabs $0x3ffffffffffffffe,%r8
ff ff 3f
add    $0xffffffff,%r9d
imul   %ecx,%r9d
movslq %r9d,%rax
mov    %rax,-0x70(%rsp)
mov    -0x80(%rsp),%r10d
mov    %r10d,%eax
sub    %ecx,%eax
mov    %eax,-0x7c(%rsp)
mov    %esi,%eax
mov    %rax,0x50(%rsp)
mov    %edx,%ebx
mov    %ecx,%r11d
xor    %r9d,%r9d
test   %edx,%edx
mov    $0x0,%r12d
cmovg  %edx,%r12d
mov    %ebx,%eax
and    $0xfffffff8,%eax
mov    %rax,-0x8(%rsp)
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x10(%rsp)
shr    $0x3,%rax
add    $0x1,%rax
mov    %r11d,%esi
and    $0xfffffff8,%esi
mov    %rsi,0x70(%rsp)
add    $0xfffffffffffffff8,%rsi
mov    %rsi,0x68(%rsp)
shr    $0x3,%rsi
add    $0x1,%rsi
lea    -0x2(%r8),%rdx
and    %rax,%rdx
mov    %rdx,-0x20(%rsp)
mov    %eax,%edx
and    $0x3,%edx
mov    %ebx,%r8d
and    $0x3,%r8d
mov    %rsi,%rax
mov    %rsi,0x60(%rsp)
and    $0xfffffffffffffffe,%rsi
mov    %rsi,0x8(%rsp)
mov    %r11d,%eax
and    $0x3,%eax
mov    %rax,0xa8(%rsp)
mov    %rdx,-0x18(%rsp)
mov    %rdx,%rdi
shl    $0x5,%rdi
mov    0xe8(%rsp),%r15
movslq %ecx,%rdx
movslq 0xf0(%rsp),%rsi
movslq %r10d,%rax
mov    %rax,-0x60(%rsp)
lea    -0x1(%r11),%rax
mov    %rax,0x98(%rsp)
mov    %r11,-0x68(%rsp)
lea    (%r15,%r11,4),%rax
mov    %rax,0x90(%rsp)
mov    -0x50(%rsp),%rax
lea    0x70(%rax),%r10
mov    %rdx,0x30(%rsp)
lea    0x0(,%rdx,4),%rdx
mov    %rdx,0x20(%rsp)
lea    0x70(%r15),%rbp
lea    0x0(,%rsi,4),%rdx
mov    %rdx,0x18(%rsp)
lea    0x10(%r15),%rdx
mov    %rdx,-0x58(%rsp)
lea    0x8(%r12),%rdx
mov    %rdx,-0x30(%rsp)
mov    %rsi,0x28(%rsp)
mov    %esi,%edx
mov    %rdx,0x10(%rsp)
mov    %r12,(%rsp)
mov    %r12,-0x38(%rsp)
mov    %r15,-0x78(%rsp)
mov    %rax,-0x40(%rsp)
mov    %r14d,-0x48(%rsp)
mov    %rbx,0x48(%rsp)
mov    %r8,0x40(%rsp)
mov    %rdi,0x38(%rsp)
jmp    12fe <s_cvt_pmat2mat+0x1fe>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r9
mov    0x80(%rsp),%r10
mov    0x20(%rsp),%rax
add    %rax,%r10
mov    0x78(%rsp),%rbp
mov    0x18(%rsp),%rdx
add    %rdx,%rbp
add    %rdx,-0x58(%rsp)
add    %rax,-0x40(%rsp)
add    %rdx,-0x78(%rsp)
mov    0x10(%rsp),%rax
add    %rax,-0x30(%rsp)
add    %rax,-0x38(%rsp)
cmp    0x50(%rsp),%r9
mov    -0x48(%rsp),%r14d
mov    0x48(%rsp),%rbx
mov    0x40(%rsp),%r8
mov    0x38(%rsp),%rdi
je     1907 <s_cvt_pmat2mat+0x807>
mov    %r9,%rax
imul   0x28(%rsp),%rax
mov    %rax,-0x28(%rsp)
mov    %r9,%rax
imul   0x30(%rsp),%rax
mov    -0x50(%rsp),%rdx
lea    (%rdx,%rax,4),%r11
test   %r14d,%r14d
jle    13f0 <s_cvt_pmat2mat+0x2f0>
cmp    $0x8,%r14d
jb     135c <s_cvt_pmat2mat+0x25c>
add    %rbx,%rax
mov    -0x28(%rsp),%rdx
lea    (%r15,%rdx,4),%r12
mov    -0x50(%rsp),%rsi
lea    (%rsi,%rax,4),%rax
cmp    %rax,%r12
jae    13fd <s_cvt_pmat2mat+0x2fd>
lea    (%rdx,%rbx,1),%rax
lea    (%r15,%rax,4),%rax
cmp    %rax,%r11
jae    13fd <s_cvt_pmat2mat+0x2fd>
xor    %esi,%esi
mov    -0x70(%rsp),%r13
mov    %rsi,%rax
not    %rax
add    %rbx,%rax
test   %r8,%r8
je     1398 <s_cvt_pmat2mat+0x298>
mov    %r8,%rdx
mov    -0x78(%rsp),%rdi
nopl   0x0(%rax)
movss  (%r11),%xmm0
movss  %xmm0,(%rdi,%rsi,4)
add    $0x4,%r11
add    $0x1,%rsi
add    $0xffffffffffffffff,%rdx
jne    1380 <s_cvt_pmat2mat+0x280>
cmp    $0x3,%rax
jb     14d0 <s_cvt_pmat2mat+0x3d0>
mov    -0x78(%rsp),%rax
nopw   0x0(%rax,%rax,1)
movss  (%r11),%xmm0
movss  %xmm0,(%rax,%rsi,4)
movss  0x4(%r11),%xmm0
movss  %xmm0,0x4(%rax,%rsi,4)
movss  0x8(%r11),%xmm0
movss  %xmm0,0x8(%rax,%rsi,4)
movss  0xc(%r11),%xmm0
movss  %xmm0,0xc(%rax,%rsi,4)
add    $0x10,%r11
add    $0x4,%rsi
cmp    %rsi,%rbx
jne    13b0 <s_cvt_pmat2mat+0x2b0>
jmp    14d0 <s_cvt_pmat2mat+0x3d0>
xor    %r8d,%r8d
mov    -0x70(%rsp),%r13
jmp    14d7 <s_cvt_pmat2mat+0x3d7>
cmpq   $0x18,-0x10(%rsp)
mov    -0x70(%rsp),%r13
jae    140e <s_cvt_pmat2mat+0x30e>
xor    %eax,%eax
jmp    1481 <s_cvt_pmat2mat+0x381>
mov    -0x20(%rsp),%rdx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movups -0x70(%r10,%rax,4),%xmm0
movups -0x60(%r10,%rax,4),%xmm1
movups %xmm0,-0x70(%rbp,%rax,4)
movups %xmm1,-0x60(%rbp,%rax,4)
movups -0x50(%r10,%rax,4),%xmm0
movups -0x40(%r10,%rax,4),%xmm1
movups %xmm0,-0x50(%rbp,%rax,4)
movups %xmm1,-0x40(%rbp,%rax,4)
movups -0x30(%r10,%rax,4),%xmm0
movups -0x20(%r10,%rax,4),%xmm1
movups %xmm0,-0x30(%rbp,%rax,4)
movups %xmm1,-0x20(%rbp,%rax,4)
movups -0x10(%r10,%rax,4),%xmm0
movups (%r10,%rax,4),%xmm1
movups %xmm0,-0x10(%rbp,%rax,4)
movups %xmm1,0x0(%rbp,%rax,4)
add    $0x20,%rax
add    $0xfffffffffffffffc,%rdx
jne    1420 <s_cvt_pmat2mat+0x320>
cmpq   $0x0,-0x18(%rsp)
je     14bb <s_cvt_pmat2mat+0x3bb>
mov    -0x58(%rsp),%rdx
lea    (%rdx,%rax,4),%rdx
mov    -0x40(%rsp),%rsi
lea    (%rsi,%rax,4),%rax
xor    %esi,%esi
nopl   (%rax)
movups (%rax,%rsi,1),%xmm0
movups 0x10(%rax,%rsi,1),%xmm1
movups %xmm0,-0x10(%rdx,%rsi,1)
movups %xmm1,(%rdx,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rdi
jne    14a0 <s_cvt_pmat2mat+0x3a0>
mov    -0x8(%rsp),%rax
lea    (%r11,%rax,4),%r11
mov    %rax,%rsi
cmp    %rbx,%rax
jne    1363 <s_cvt_pmat2mat+0x263>
lea    (%r11,%r13,4),%r11
mov    %r14d,%r8d
mov    -0x7c(%rsp),%esi
mov    -0x68(%rsp),%rbx
cmp    %esi,%r8d
mov    %r9,0x88(%rsp)
mov    %r10,0x80(%rsp)
mov    %rbp,0x78(%rsp)
jle    16b0 <s_cvt_pmat2mat+0x5b0>
cmp    -0x80(%rsp),%r8d
mov    0x88(%rsp),%r9
jge    12a0 <s_cvt_pmat2mat+0x1a0>
movslq %r8d,%rsi
mov    -0x60(%rsp),%rbp
mov    %rbp,%r8
sub    %rsi,%r8
cmp    $0x8,%r8
jb     1610 <s_cvt_pmat2mat+0x510>
mov    -0x28(%rsp),%r14
lea    (%r14,%rsi,1),%rax
lea    (%r15,%rax,4),%rax
lea    (%r11,%rbp,4),%rdx
lea    0x0(,%rsi,4),%rdi
sub    %rdi,%rdx
cmp    %rdx,%rax
jae    155b <s_cvt_pmat2mat+0x45b>
lea    (%r14,%rbp,1),%rax
lea    (%r15,%rax,4),%rax
cmp    %rax,%r11
jb     1610 <s_cvt_pmat2mat+0x510>
mov    %r8,%r10
and    $0xfffffffffffffff8,%r10
lea    -0x8(%r10),%rdx
mov    %rdx,%rax
shr    $0x3,%rax
add    $0x1,%rax
test   %rdx,%rdx
je     18f8 <s_cvt_pmat2mat+0x7f8>
mov    %rax,%rdi
movabs $0x3ffffffffffffffe,%rdx
ff ff 3f
and    %rdx,%rdi
mov    -0x58(%rsp),%rdx
lea    (%rdx,%rsi,4),%rbx
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nop
movups (%r11,%rdx,4),%xmm0
movups 0x10(%r11,%rdx,4),%xmm1
movups %xmm0,-0x10(%rbx,%rdx,4)
movups %xmm1,(%rbx,%rdx,4)
movups 0x20(%r11,%rdx,4),%xmm0
movups 0x30(%r11,%rdx,4),%xmm1
movups %xmm0,0x10(%rbx,%rdx,4)
movups %xmm1,0x20(%rbx,%rdx,4)
add    $0x10,%rdx
add    $0xfffffffffffffffe,%rdi
jne    15a0 <s_cvt_pmat2mat+0x4a0>
test   $0x1,%al
je     15f4 <s_cvt_pmat2mat+0x4f4>
movups (%r11,%rdx,4),%xmm0
movups 0x10(%r11,%rdx,4),%xmm1
add    %rdx,%r14
add    %rsi,%r14
movups %xmm0,(%r15,%r14,4)
movups %xmm1,0x10(%r15,%r14,4)
cmp    %r10,%r8
je     12a0 <s_cvt_pmat2mat+0x1a0>
add    %r10,%rsi
lea    (%r11,%r10,4),%r11
mov    -0x60(%rsp),%rbp
nopl   0x0(%rax)
mov    -0x80(%rsp),%eax
mov    %eax,%ebx
sub    %esi,%ebx
mov    %rsi,%rax
not    %rax
add    %rbp,%rax
and    $0x3,%rbx
je     1648 <s_cvt_pmat2mat+0x548>
mov    -0x78(%rsp),%rdx
nopl   0x0(%rax)
movss  (%r11),%xmm0
movss  %xmm0,(%rdx,%rsi,4)
add    $0x4,%r11
add    $0x1,%rsi
add    $0xffffffffffffffff,%rbx
jne    1630 <s_cvt_pmat2mat+0x530>
cmp    $0x3,%rax
jb     12a0 <s_cvt_pmat2mat+0x1a0>
mov    -0x60(%rsp),%rax
sub    %rsi,%rax
mov    -0x78(%rsp),%rdx
lea    (%rdx,%rsi,4),%rdx
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nop
movss  (%r11,%rsi,4),%xmm0
movss  %xmm0,(%rdx,%rsi,4)
movss  0x4(%r11,%rsi,4),%xmm0
movss  %xmm0,0x4(%rdx,%rsi,4)
movss  0x8(%r11,%rsi,4),%xmm0
movss  %xmm0,0x8(%rdx,%rsi,4)
movss  0xc(%r11,%rsi,4),%xmm0
movss  %xmm0,0xc(%rdx,%rsi,4)
add    $0x4,%rsi
cmp    %rsi,%rax
jne    1670 <s_cvt_pmat2mat+0x570>
jmp    12a0 <s_cvt_pmat2mat+0x1a0>
mov    %r9d,%eax
mov    0xf0(%rsp),%edi
imul   %edi,%eax
mov    (%rsp),%rdx
lea    (%rax,%rdx,1),%ebp
mov    %ebp,-0x44(%rsp)
add    %edx,%eax
mov    %rax,0xa0(%rsp)
imul   %edi,%r9d
mov    %r9,0x58(%rsp)
xor    %r10d,%r10d
mov    -0x38(%rsp),%r14
mov    -0x30(%rsp),%r9
jmp    170a <s_cvt_pmat2mat+0x60a>
nopw   0x0(%rax,%rax,1)
lea    (%r11,%r13,4),%r11
add    %ecx,%r8d
add    $0x1,%r10d
add    %rbx,%r9
add    %rbx,%r14
cmp    %esi,%r8d
jg     14fe <s_cvt_pmat2mat+0x3fe>
test   %ecx,%ecx
jle    16f0 <s_cvt_pmat2mat+0x5f0>
cmp    $0x8,%ecx
jb     1770 <s_cvt_pmat2mat+0x670>
mov    %r10d,%eax
imul   %ecx,%eax
mov    0xa0(%rsp),%rdx
add    %eax,%edx
mov    0x98(%rsp),%rbp
lea    (%rdx,%rbp,1),%edi
cmp    %edx,%edi
jl     1770 <s_cvt_pmat2mat+0x670>
mov    %rbp,%rdx
shr    $0x20,%rdx
jne    1770 <s_cvt_pmat2mat+0x670>
add    -0x44(%rsp),%eax
cltq
mov    0x90(%rsp),%rdx
lea    (%rdx,%rax,4),%rdx
cmp    %rdx,%r11
jae    184d <s_cvt_pmat2mat+0x74d>
lea    (%r15,%rax,4),%rax
lea    (%r11,%rbx,4),%rdx
cmp    %rdx,%rax
jae    184d <s_cvt_pmat2mat+0x74d>
nopw   0x0(%rax,%rax,1)
xor    %r12d,%r12d
mov    %r12,%rax
not    %rax
add    %rbx,%rax
mov    0xa8(%rsp),%rdx
test   %rdx,%rdx
je     17b0 <s_cvt_pmat2mat+0x6b0>
nopl   0x0(%rax)
movss  (%r11),%xmm0
lea    (%r14,%r12,1),%edi
movslq %edi,%rdi
movss  %xmm0,(%r15,%rdi,4)
add    $0x4,%r11
add    $0x1,%r12
add    $0xffffffffffffffff,%rdx
jne    1790 <s_cvt_pmat2mat+0x690>
cmp    $0x3,%rax
jb     16f0 <s_cvt_pmat2mat+0x5f0>
lea    (%r12,%r14,1),%eax
sub    %r12,%rbx
xor    %edi,%edi
mov    %r11,%rdx
cs nopw 0x0(%rax,%rax,1)
mov    %rdx,%rbp
movss  (%r11,%rdi,4),%xmm0
lea    (%rax,%rdi,1),%rdx
movslq %edx,%rdx
movss  %xmm0,(%r15,%rdx,4)
movss  0x4(%r11,%rdi,4),%xmm0
lea    0x1(%rdx),%esi
movslq %esi,%rsi
movss  %xmm0,(%r15,%rsi,4)
movss  0x8(%r11,%rdi,4),%xmm0
lea    0x2(%rdx),%esi
movslq %esi,%rsi
movss  %xmm0,(%r15,%rsi,4)
movss  0xc(%r11,%rdi,4),%xmm0
add    $0x3,%edx
movslq %edx,%rdx
movss  %xmm0,(%r15,%rdx,4)
lea    (%r11,%rdi,4),%rdx
add    $0x10,%rdx
lea    0x4(%rdi),%rsi
mov    %rsi,%rdi
cmp    %rsi,%rbx
jne    17d0 <s_cvt_pmat2mat+0x6d0>
add    $0x10,%rbp
mov    %rbp,%r11
mov    -0x70(%rsp),%r13
mov    -0x7c(%rsp),%esi
mov    -0x68(%rsp),%rbx
jmp    16f0 <s_cvt_pmat2mat+0x5f0>
cmpq   $0x0,0x68(%rsp)
je     18ed <s_cvt_pmat2mat+0x7ed>
mov    0x8(%rsp),%rbx
xor    %eax,%eax
movups (%r11,%rax,4),%xmm0
movups 0x10(%r11,%rax,4),%xmm1
lea    (%r14,%rax,1),%edx
movslq %edx,%rdx
movups %xmm0,(%r15,%rdx,4)
movups %xmm1,0x10(%r15,%rdx,4)
movups 0x20(%r11,%rax,4),%xmm0
movups 0x30(%r11,%rax,4),%xmm1
lea    (%r9,%rax,1),%edx
movslq %edx,%rdx
movups %xmm0,(%r15,%rdx,4)
movups %xmm1,0x10(%r15,%rdx,4)
add    $0x10,%rax
add    $0xfffffffffffffffe,%rbx
jne    1860 <s_cvt_pmat2mat+0x760>
testb  $0x1,0x60(%rsp)
je     18ce <s_cvt_pmat2mat+0x7ce>
mov    0x58(%rsp),%rdx
add    %r8d,%edx
movups (%r11,%rax,4),%xmm0
movups 0x10(%r11,%rax,4),%xmm1
add    %edx,%eax
cltq
movups %xmm0,(%r15,%rax,4)
movups %xmm1,0x10(%r15,%rax,4)
mov    0x70(%rsp),%rax
lea    (%r11,%rax,4),%r11
mov    %rax,%r12
mov    -0x68(%rsp),%rbx
cmp    %rbx,%rax
je     16f0 <s_cvt_pmat2mat+0x5f0>
jmp    1773 <s_cvt_pmat2mat+0x673>
xor    %eax,%eax
testb  $0x1,0x60(%rsp)
jne    18ac <s_cvt_pmat2mat+0x7ac>
jmp    18ce <s_cvt_pmat2mat+0x7ce>
xor    %edx,%edx
test   $0x1,%al
jne    15d8 <s_cvt_pmat2mat+0x4d8>
jmp    15f4 <s_cvt_pmat2mat+0x4f4>
add    $0xb0,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @s_cvt_pmat2mat(i32 %0, i32 %1, i32 %2, i32 %3, float* %4, i32 %5, float* %6, i32 %7) {
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca float*
%14 = alloca i32
%15 = alloca float*
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca float*
store i32 %0, i32* %9
store i32 %1, i32* %10
store i32 %2, i32* %11
store i32 %3, i32* %12
store float* %4, float** %13
store i32 %5, i32* %14
store float* %6, float** %15
store i32 %7, i32* %16
%22 = load i32, i32* %12
%23 = load i32, i32* %11
%24 = load i32, i32* %12
%25 = srem i32 %23, %24
%26 = sub nsw i32 %22, %25
%27 = load i32, i32* %12
%28 = srem i32 %26, %27
store i32 %28, i32* %20
store i32 0, i32* %19
br label %29
29: ; preds = %139, %8
%30 = load i32, i32* %19
%31 = load i32, i32* %10
%32 = icmp slt i32 %30, %31
br i1 %32, label %33, label %142
33: ; preds = %29
%34 = load float*, float** %13
%35 = load i32, i32* %19
%36 = load i32, i32* %12
%37 = mul nsw i32 %35, %36
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds float, float* %34, i64 %38
store float* %39, float** %21
store i32 0, i32* %18
%40 = load i32, i32* %20
%41 = icmp sgt i32 %40, 0
br i1 %41, label %42, label %72
42: ; preds = %33
br label %43
43: ; preds = %61, %42
%44 = load i32, i32* %18
%45 = load i32, i32* %20
%46 = icmp slt i32 %44, %45
br i1 %46, label %47, label %64
47: ; preds = %43
%48 = load float*, float** %21
%49 = getelementptr inbounds float, float* %48, i64 0
%50 = load float, float* %49
%51 = load float*, float** %15
%52 = load i32, i32* %18
%53 = load i32, i32* %16
%54 = load i32, i32* %19
%55 = mul nsw i32 %53, %54
%56 = add nsw i32 %52, %55
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds float, float* %51, i64 %57
store float %50, float* %58
%59 = load float*, float** %21
%60 = getelementptr inbounds float, float* %59, i32 1
store float* %60, float** %21
br label %61
61: ; preds = %47
%62 = load i32, i32* %18
%63 = add nsw i32 %62, 1
store i32 %63, i32* %18
br label %43
64: ; preds = %43
%65 = load i32, i32* %14
%66 = sub nsw i32 %65, 1
%67 = load i32, i32* %12
%68 = mul nsw i32 %66, %67
%69 = load float*, float** %21
%70 = sext i32 %68 to i64
%71 = getelementptr inbounds float, float* %69, i64 %70
store float* %71, float** %21
br label %72
72: ; preds = %64, %33
br label %73
73: ; preds = %112, %72
%74 = load i32, i32* %18
%75 = load i32, i32* %9
%76 = load i32, i32* %12
%77 = sub nsw i32 %75, %76
%78 = add nsw i32 %77, 1
%79 = icmp slt i32 %74, %78
br i1 %79, label %80, label %116
80: ; preds = %73
store i32 0, i32* %17
br label %81
81: ; preds = %101, %80
%82 = load i32, i32* %17
%83 = load i32, i32* %12
%84 = icmp slt i32 %82, %83
br i1 %84, label %85, label %104
85: ; preds = %81
%86 = load float*, float** %21
%87 = getelementptr inbounds float, float* %86, i64 0
%88 = load float, float* %87
%89 = load float*, float** %15
%90 = load i32, i32* %17
%91 = load i32, i32* %18
%92 = add nsw i32 %90, %91
%93 = load i32, i32* %16
%94 = load i32, i32* %19
%95 = mul nsw i32 %93, %94
%96 = add nsw i32 %92, %95
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds float, float* %89, i64 %97
store float %88, float* %98
%99 = load float*, float** %21
%100 = getelementptr inbounds float, float* %99, i32 1
store float* %100, float** %21
br label %101
101: ; preds = %85
%102 = load i32, i32* %17
%103 = add nsw i32 %102, 1
store i32 %103, i32* %17
br label %81
104: ; preds = %81
%105 = load i32, i32* %14
%106 = sub nsw i32 %105, 1
%107 = load i32, i32* %12
%108 = mul nsw i32 %106, %107
%109 = load float*, float** %21
%110 = sext i32 %108 to i64
%111 = getelementptr inbounds float, float* %109, i64 %110
store float* %111, float** %21
br label %112
112: ; preds = %104
%113 = load i32, i32* %12
%114 = load i32, i32* %18
%115 = add nsw i32 %114, %113
store i32 %115, i32* %18
br label %73
116: ; preds = %73
br label %117
117: ; preds = %135, %116
%118 = load i32, i32* %18
%119 = load i32, i32* %9
%120 = icmp slt i32 %118, %119
br i1 %120, label %121, label %138
121: ; preds = %117
%122 = load float*, float** %21
%123 = getelementptr inbounds float, float* %122, i64 0
%124 = load float, float* %123
%125 = load float*, float** %15
%126 = load i32, i32* %18
%127 = load i32, i32* %16
%128 = load i32, i32* %19
%129 = mul nsw i32 %127, %128
%130 = add nsw i32 %126, %129
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds float, float* %125, i64 %131
store float %124, float* %132
%133 = load float*, float** %21
%134 = getelementptr inbounds float, float* %133, i32 1
store float* %134, float** %21
br label %135
135: ; preds = %121
%136 = load i32, i32* %18
%137 = add nsw i32 %136, 1
store i32 %137, i32* %18
br label %117
138: ; preds = %117
br label %139
139: ; preds = %138
%140 = load i32, i32* %19
%141 = add nsw i32 %140, 1
store i32 %141, i32* %19
br label %29
142: ; preds = %29
ret void
}

LLVM IR (-O2):
define void @s_cvt_pmat2mat(i32 %0, i32 %1, i32 %2, i32 %3, float* nocapture %4, i32 %5, float* nocapture writeonly %6, i32 %7) {
%9 = srem i32 %2, %3
%10 = sub nsw i32 %3, %9
%11 = srem i32 %10, %3
%12 = icmp sgt i32 %1, 0
br i1 %12, label %13, label %478
13: ; preds = %8
%14 = icmp sgt i32 %11, 0
%15 = add nsw i32 %5, -1
%16 = mul nsw i32 %15, %3
%17 = sext i32 %16 to i64
%18 = sub nsw i32 %0, %3
%19 = icmp sgt i32 %3, 0
%20 = sext i32 %3 to i64
%21 = sext i32 %7 to i64
%22 = zext i32 %1 to i64
%23 = zext i32 %11 to i64
%24 = zext i32 %3 to i64
%25 = sext i32 %0 to i64
%26 = add nsw i64 %24, -1
%27 = call i32 @llvm.smax.i32(i32 %11, i32 0)
%28 = call i32 @llvm.smax.i32(i32 %11, i32 0)
%29 = getelementptr float, float* %6, i64 %24
%30 = and i64 %23, 4294967288
%31 = add nsw i64 %30, -8
%32 = lshr exact i64 %31, 3
%33 = add nuw nsw i64 %32, 1
%34 = and i64 %24, 4294967288
%35 = add nsw i64 %34, -8
%36 = lshr exact i64 %35, 3
%37 = add nuw nsw i64 %36, 1
%38 = icmp ult i32 %11, 8
%39 = and i64 %23, 4294967288
%40 = and i64 %33, 3
%41 = icmp ult i64 %31, 24
%42 = and i64 %33, 4611686018427387900
%43 = icmp eq i64 %40, 0
%44 = icmp eq i64 %39, %23
%45 = and i64 %23, 3
%46 = icmp eq i64 %45, 0
%47 = icmp ult i32 %3, 8
%48 = trunc i64 %26 to i32
%49 = icmp ugt i64 %26, 4294967295
%50 = and i64 %24, 4294967288
%51 = and i64 %37, 1
%52 = icmp eq i64 %35, 0
%53 = and i64 %37, 4611686018427387902
%54 = icmp eq i64 %51, 0
%55 = icmp eq i64 %50, %24
%56 = and i64 %24, 3
%57 = icmp eq i64 %56, 0
br label %58
58: ; preds = %13, %475
%59 = phi i64 [ 0, %13 ], [ %476, %475 ]
%60 = mul i64 %59, %21
%61 = getelementptr float, float* %6, i64 %60
%62 = add i64 %60, %23
%63 = getelementptr float, float* %6, i64 %62
%64 = mul i64 %59, %20
%65 = getelementptr float, float* %4, i64 %64
%66 = add i64 %64, %23
%67 = getelementptr float, float* %4, i64 %66
%68 = trunc i64 %59 to i32
%69 = mul i32 %68, %7
%70 = add i32 %69, %28
%71 = trunc i64 %59 to i32
%72 = mul i32 %71, %7
%73 = add i32 %72, %27
%74 = mul i64 %59, %21
%75 = add i64 %74, %25
%76 = getelementptr float, float* %6, i64 %75
%77 = mul nsw i64 %59, %20
%78 = getelementptr inbounds float, float* %4, i64 %77
br i1 %14, label %79, label %208
79: ; preds = %58
%80 = mul nsw i64 %59, %21
br i1 %38, label %160, label %81
81: ; preds = %79
%82 = icmp ult float* %61, %67
%83 = icmp ult float* %65, %63
%84 = and i1 %82, %83
br i1 %84, label %160, label %85
85: ; preds = %81
%86 = getelementptr float, float* %78, i64 %39
br i1 %41, label %140, label %87
87: ; preds = %85, %87
%88 = phi i64 [ %137, %87 ], [ 0, %85 ]
%89 = phi i64 [ %138, %87 ], [ 0, %85 ]
%90 = getelementptr float, float* %78, i64 %88
%91 = bitcast float* %90 to <4 x float>*
%92 = load <4 x float>, <4 x float>* %91
%93 = getelementptr float, float* %90, i64 4
%94 = bitcast float* %93 to <4 x float>*
%95 = load <4 x float>, <4 x float>* %94
%96 = add nsw i64 %88, %80
%97 = getelementptr inbounds float, float* %6, i64 %96
%98 = bitcast float* %97 to <4 x float>*
store <4 x float> %92, <4 x float>* %98
%99 = getelementptr inbounds float, float* %97, i64 4
%100 = bitcast float* %99 to <4 x float>*
store <4 x float> %95, <4 x float>* %100
%101 = or i64 %88, 8
%102 = getelementptr float, float* %78, i64 %101
%103 = bitcast float* %102 to <4 x float>*
%104 = load <4 x float>, <4 x float>* %103
%105 = getelementptr float, float* %102, i64 4
%106 = bitcast float* %105 to <4 x float>*
%107 = load <4 x float>, <4 x float>* %106
%108 = add nsw i64 %101, %80
%109 = getelementptr inbounds float, float* %6, i64 %108
%110 = bitcast float* %109 to <4 x float>*
store <4 x float> %104, <4 x float>* %110
%111 = getelementptr inbounds float, float* %109, i64 4
%112 = bitcast float* %111 to <4 x float>*
store <4 x float> %107, <4 x float>* %112
%113 = or i64 %88, 16
%114 = getelementptr float, float* %78, i64 %113
%115 = bitcast float* %114 to <4 x float>*
%116 = load <4 x float>, <4 x float>* %115
%117 = getelementptr float, float* %114, i64 4
%118 = bitcast float* %117 to <4 x float>*
%119 = load <4 x float>, <4 x float>* %118
%120 = add nsw i64 %113, %80
%121 = getelementptr inbounds float, float* %6, i64 %120
%122 = bitcast float* %121 to <4 x float>*
store <4 x float> %116, <4 x float>* %122
%123 = getelementptr inbounds float, float* %121, i64 4
%124 = bitcast float* %123 to <4 x float>*
store <4 x float> %119, <4 x float>* %124
%125 = or i64 %88, 24
%126 = getelementptr float, float* %78, i64 %125
%127 = bitcast float* %126 to <4 x float>*
%128 = load <4 x float>, <4 x float>* %127
%129 = getelementptr float, float* %126, i64 4
%130 = bitcast float* %129 to <4 x float>*
%131 = load <4 x float>, <4 x float>* %130
%132 = add nsw i64 %125, %80
%133 = getelementptr inbounds float, float* %6, i64 %132
%134 = bitcast float* %133 to <4 x float>*
store <4 x float> %128, <4 x float>* %134
%135 = getelementptr inbounds float, float* %133, i64 4
%136 = bitcast float* %135 to <4 x float>*
store <4 x float> %131, <4 x float>* %136
%137 = add nuw i64 %88, 32
%138 = add i64 %89, 4
%139 = icmp eq i64 %138, %42
br i1 %139, label %140, label %87
140: ; preds = %87, %85
%141 = phi i64 [ 0, %85 ], [ %137, %87 ]
br i1 %43, label %159, label %142
142: ; preds = %140, %142
%143 = phi i64 [ %156, %142 ], [ %141, %140 ]
%144 = phi i64 [ %157, %142 ], [ 0, %140 ]
%145 = getelementptr float, float* %78, i64 %143
%146 = bitcast float* %145 to <4 x float>*
%147 = load <4 x float>, <4 x float>* %146
%148 = getelementptr float, float* %145, i64 4
%149 = bitcast float* %148 to <4 x float>*
%150 = load <4 x float>, <4 x float>* %149
%151 = add nsw i64 %143, %80
%152 = getelementptr inbounds float, float* %6, i64 %151
%153 = bitcast float* %152 to <4 x float>*
store <4 x float> %147, <4 x float>* %153
%154 = getelementptr inbounds float, float* %152, i64 4
%155 = bitcast float* %154 to <4 x float>*
store <4 x float> %150, <4 x float>* %155
%156 = add nuw i64 %143, 8
%157 = add i64 %144, 1
%158 = icmp eq i64 %157, %40
br i1 %158, label %159, label %142
159: ; preds = %142, %140
br i1 %44, label %205, label %160
160: ; preds = %81, %79, %159
%161 = phi i64 [ 0, %81 ], [ 0, %79 ], [ %39, %159 ]
%162 = phi float* [ %78, %81 ], [ %78, %79 ], [ %86, %159 ]
%163 = xor i64 %161, -1
%164 = add nsw i64 %163, %23
br i1 %46, label %176, label %165
165: ; preds = %160, %165
%166 = phi i64 [ %173, %165 ], [ %161, %160 ]
%167 = phi float* [ %172, %165 ], [ %162, %160 ]
%168 = phi i64 [ %174, %165 ], [ 0, %160 ]
%169 = load float, float* %167
%170 = add nsw i64 %166, %80
%171 = getelementptr inbounds float, float* %6, i64 %170
store float %169, float* %171
%172 = getelementptr inbounds float, float* %167, i64 1
%173 = add nuw nsw i64 %166, 1
%174 = add i64 %168, 1
%175 = icmp eq i64 %174, %45
br i1 %175, label %176, label %165
176: ; preds = %165, %160
%177 = phi float* [ undef, %160 ], [ %172, %165 ]
%178 = phi i64 [ %161, %160 ], [ %173, %165 ]
%179 = phi float* [ %162, %160 ], [ %172, %165 ]
%180 = icmp ult i64 %164, 3
br i1 %180, label %205, label %181
181: ; preds = %176, %181
%182 = phi i64 [ %203, %181 ], [ %178, %176 ]
%183 = phi float* [ %202, %181 ], [ %179, %176 ]
%184 = load float, float* %183
%185 = add nsw i64 %182, %80
%186 = getelementptr inbounds float, float* %6, i64 %185
store float %184, float* %186
%187 = getelementptr inbounds float, float* %183, i64 1
%188 = add nuw nsw i64 %182, 1
%189 = load float, float* %187
%190 = add nsw i64 %188, %80
%191 = getelementptr inbounds float, float* %6, i64 %190
store float %189, float* %191
%192 = getelementptr inbounds float, float* %183, i64 2
%193 = add nuw nsw i64 %182, 2
%194 = load float, float* %192
%195 = add nsw i64 %193, %80
%196 = getelementptr inbounds float, float* %6, i64 %195
store float %194, float* %196
%197 = getelementptr inbounds float, float* %183, i64 3
%198 = add nuw nsw i64 %182, 3
%199 = load float, float* %197
%200 = add nsw i64 %198, %80
%201 = getelementptr inbounds float, float* %6, i64 %200
store float %199, float* %201
%202 = getelementptr inbounds float, float* %183, i64 4
%203 = add nuw nsw i64 %182, 4
%204 = icmp eq i64 %203, %23
br i1 %204, label %205, label %181
205: ; preds = %176, %181, %159
%206 = phi float* [ %86, %159 ], [ %177, %176 ], [ %202, %181 ]
%207 = getelementptr inbounds float, float* %206, i64 %17
br label %208
208: ; preds = %205, %58
%209 = phi i32 [ %11, %205 ], [ 0, %58 ]
%210 = phi float* [ %207, %205 ], [ %78, %58 ]
%211 = icmp sgt i32 %209, %18
br i1 %211, label %215, label %212
212: ; preds = %208
%213 = trunc i64 %59 to i32
%214 = mul i32 %213, %7
br label %316
215: ; preds = %445, %208
%216 = phi i32 [ %209, %208 ], [ %448, %445 ]
%217 = phi float* [ %210, %208 ], [ %447, %445 ]
%218 = icmp slt i32 %216, %0
br i1 %218, label %219, label %475
219: ; preds = %215
%220 = mul nsw i64 %59, %21
%221 = sext i32 %216 to i64
%222 = sub nsw i64 %25, %221
%223 = icmp ult i64 %222, 8
br i1 %223, label %293, label %224
224: ; preds = %219
%225 = add i64 %74, %221
%226 = getelementptr float, float* %6, i64 %225
%227 = getelementptr float, float* %217, i64 %25
%228 = sub nsw i64 0, %221
%229 = getelementptr float, float* %227, i64 %228
%230 = icmp ult float* %226, %229
%231 = icmp ult float* %217, %76
%232 = and i1 %230, %231
br i1 %232, label %293, label %233
233: ; preds = %224
%234 = and i64 %222, -8
%235 = add nsw i64 %234, %221
%236 = getelementptr float, float* %217, i64 %234
%237 = add nsw i64 %234, -8
%238 = lshr exact i64 %237, 3
%239 = add nuw nsw i64 %238, 1
%240 = and i64 %239, 1
%241 = icmp eq i64 %237, 0
br i1 %241, label %275, label %242
242: ; preds = %233
%243 = and i64 %239, 4611686018427387902
br label %244
244: ; preds = %244, %242
%245 = phi i64 [ 0, %242 ], [ %272, %244 ]
%246 = phi i64 [ 0, %242 ], [ %273, %244 ]
%247 = add i64 %245, %221
%248 = getelementptr float, float* %217, i64 %245
%249 = bitcast float* %248 to <4 x float>*
%250 = load <4 x float>, <4 x float>* %249
%251 = getelementptr float, float* %248, i64 4
%252 = bitcast float* %251 to <4 x float>*
%253 = load <4 x float>, <4 x float>* %252
%254 = add nsw i64 %247, %220
%255 = getelementptr inbounds float, float* %6, i64 %254
%256 = bitcast float* %255 to <4 x float>*
store <4 x float> %250, <4 x float>* %256
%257 = getelementptr inbounds float, float* %255, i64 4
%258 = bitcast float* %257 to <4 x float>*
store <4 x float> %253, <4 x float>* %258
%259 = or i64 %245, 8
%260 = add i64 %259, %221
%261 = getelementptr float, float* %217, i64 %259
%262 = bitcast float* %261 to <4 x float>*
%263 = load <4 x float>, <4 x float>* %262
%264 = getelementptr float, float* %261, i64 4
%265 = bitcast float* %264 to <4 x float>*
%266 = load <4 x float>, <4 x float>* %265
%267 = add nsw i64 %260, %220
%268 = getelementptr inbounds float, float* %6, i64 %267
%269 = bitcast float* %268 to <4 x float>*
store <4 x float> %263, <4 x float>* %269
%270 = getelementptr inbounds float, float* %268, i64 4
%271 = bitcast float* %270 to <4 x float>*
store <4 x float> %266, <4 x float>* %271
%272 = add nuw i64 %245, 16
%273 = add i64 %246, 2
%274 = icmp eq i64 %273, %243
br i1 %274, label %275, label %244
275: ; preds = %244, %233
%276 = phi i64 [ 0, %233 ], [ %272, %244 ]
%277 = icmp eq i64 %240, 0
br i1 %277, label %291, label %278
278: ; preds = %275
%279 = add i64 %276, %221
%280 = getelementptr float, float* %217, i64 %276
%281 = bitcast float* %280 to <4 x float>*
%282 = load <4 x float>, <4 x float>* %281
%283 = getelementptr float, float* %280, i64 4
%284 = bitcast float* %283 to <4 x float>*
%285 = load <4 x float>, <4 x float>* %284
%286 = add nsw i64 %279, %220
%287 = getelementptr inbounds float, float* %6, i64 %286
%288 = bitcast float* %287 to <4 x float>*
store <4 x float> %282, <4 x float>* %288
%289 = getelementptr inbounds float, float* %287, i64 4
%290 = bitcast float* %289 to <4 x float>*
store <4 x float> %285, <4 x float>* %290
br label %291
291: ; preds = %275, %278
%292 = icmp eq i64 %222, %234
br i1 %292, label %475, label %293
293: ; preds = %224, %219, %291
%294 = phi i64 [ %221, %224 ], [ %221, %219 ], [ %235, %291 ]
%295 = phi float* [ %217, %224 ], [ %217, %219 ], [ %236, %291 ]
%296 = sub nsw i64 %25, %294
%297 = xor i64 %294, -1
%298 = add nsw i64 %297, %25
%299 = and i64 %296, 3
%300 = icmp eq i64 %299, 0
br i1 %300, label %312, label %301
301: ; preds = %293, %301
%302 = phi i64 [ %309, %301 ], [ %294, %293 ]
%303 = phi float* [ %308, %301 ], [ %295, %293 ]
%304 = phi i64 [ %310, %301 ], [ 0, %293 ]
%305 = load float, float* %303
%306 = add nsw i64 %302, %220
%307 = getelementptr inbounds float, float* %6, i64 %306
store float %305, float* %307
%308 = getelementptr inbounds float, float* %303, i64 1
%309 = add nsw i64 %302, 1
%310 = add i64 %304, 1
%311 = icmp eq i64 %310, %299
br i1 %311, label %312, label %301
312: ; preds = %301, %293
%313 = phi i64 [ %294, %293 ], [ %309, %301 ]
%314 = phi float* [ %295, %293 ], [ %308, %301 ]
%315 = icmp ult i64 %298, 3
br i1 %315, label %475, label %451
316: ; preds = %212, %445
%317 = phi i32 [ 0, %212 ], [ %450, %445 ]
%318 = phi float* [ %210, %212 ], [ %447, %445 ]
%319 = phi i32 [ %209, %212 ], [ %448, %445 ]
%320 = mul i32 %317, %3
%321 = add i32 %70, %320
%322 = sext i32 %321 to i64
%323 = getelementptr float, float* %6, i64 %322
%324 = getelementptr float, float* %29, i64 %322
%325 = mul i32 %317, %3
%326 = add i32 %73, %325
br i1 %19, label %327, label %445
327: ; preds = %316
%328 = add i32 %319, %214
br i1 %47, label %390, label %329
329: ; preds = %327
%330 = add i32 %326, %48
%331 = icmp slt i32 %330, %326
%332 = or i1 %331, %49
br i1 %332, label %390, label %333
333: ; preds = %329
%334 = getelementptr float, float* %318, i64 %24
%335 = icmp ult float* %318, %324
%336 = icmp ult float* %323, %334
%337 = and i1 %335, %336
br i1 %337, label %390, label %338
338: ; preds = %333
%339 = getelementptr float, float* %318, i64 %50
br i1 %52, label %373, label %340
340: ; preds = %338, %340
%341 = phi i64 [ %370, %340 ], [ 0, %338 ]
%342 = phi i64 [ %371, %340 ], [ 0, %338 ]
%343 = getelementptr float, float* %318, i64 %341
%344 = trunc i64 %341 to i32
%345 = bitcast float* %343 to <4 x float>*
%346 = load <4 x float>, <4 x float>* %345
%347 = getelementptr float, float* %343, i64 4
%348 = bitcast float* %347 to <4 x float>*
%349 = load <4 x float>, <4 x float>* %348
%350 = add i32 %328, %344
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds float, float* %6, i64 %351
%353 = bitcast float* %352 to <4 x float>*
store <4 x float> %346, <4 x float>* %353
%354 = getelementptr inbounds float, float* %352, i64 4
%355 = bitcast float* %354 to <4 x float>*
store <4 x float> %349, <4 x float>* %355
%356 = or i64 %341, 8
%357 = getelementptr float, float* %318, i64 %356
%358 = trunc i64 %356 to i32
%359 = bitcast float* %357 to <4 x float>*
%360 = load <4 x float>, <4 x float>* %359
%361 = getelementptr float, float* %357, i64 4
%362 = bitcast float* %361 to <4 x float>*
%363 = load <4 x float>, <4 x float>* %362
%364 = add i32 %328, %358
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds float, float* %6, i64 %365
%367 = bitcast float* %366 to <4 x float>*
store <4 x float> %360, <4 x float>* %367
%368 = getelementptr inbounds float, float* %366, i64 4
%369 = bitcast float* %368 to <4 x float>*
store <4 x float> %363, <4 x float>* %369
%370 = add nuw i64 %341, 16
%371 = add i64 %342, 2
%372 = icmp eq i64 %371, %53
br i1 %372, label %373, label %340
373: ; preds = %340, %338
%374 = phi i64 [ 0, %338 ], [ %370, %340 ]
br i1 %54, label %389, label %375
375: ; preds = %373
%376 = getelementptr float, float* %318, i64 %374
%377 = trunc i64 %374 to i32
%378 = bitcast float* %376 to <4 x float>*
%379 = load <4 x float>, <4 x float>* %378
%380 = getelementptr float, float* %376, i64 4
%381 = bitcast float* %380 to <4 x float>*
%382 = load <4 x float>, <4 x float>* %381
%383 = add i32 %328, %377
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds float, float* %6, i64 %384
%386 = bitcast float* %385 to <4 x float>*
store <4 x float> %379, <4 x float>* %386
%387 = getelementptr inbounds float, float* %385, i64 4
%388 = bitcast float* %387 to <4 x float>*
store <4 x float> %382, <4 x float>* %388
br label %389
389: ; preds = %373, %375
br i1 %55, label %445, label %390
390: ; preds = %333, %329, %327, %389
%391 = phi i64 [ 0, %333 ], [ 0, %329 ], [ 0, %327 ], [ %50, %389 ]
%392 = phi float* [ %318, %333 ], [ %318, %329 ], [ %318, %327 ], [ %339, %389 ]
%393 = xor i64 %391, -1
%394 = add nsw i64 %393, %24
br i1 %57, label %408, label %395
395: ; preds = %390, %395
%396 = phi i64 [ %405, %395 ], [ %391, %390 ]
%397 = phi float* [ %404, %395 ], [ %392, %390 ]
%398 = phi i64 [ %406, %395 ], [ 0, %390 ]
%399 = load float, float* %397
%400 = trunc i64 %396 to i32
%401 = add i32 %328, %400
%402 = sext i32 %401 to i64
%403 = getelementptr inbounds float, float* %6, i64 %402
store float %399, float* %403
%404 = getelementptr inbounds float, float* %397, i64 1
%405 = add nuw nsw i64 %396, 1
%406 = add i64 %398, 1
%407 = icmp eq i64 %406, %56
br i1 %407, label %408, label %395
408: ; preds = %395, %390
%409 = phi float* [ undef, %390 ], [ %404, %395 ]
%410 = phi i64 [ %391, %390 ], [ %405, %395 ]
%411 = phi float* [ %392, %390 ], [ %404, %395 ]
%412 = icmp ult i64 %394, 3
br i1 %412, label %445, label %413
413: ; preds = %408, %413
%414 = phi i64 [ %443, %413 ], [ %410, %408 ]
%415 = phi float* [ %442, %413 ], [ %411, %408 ]
%416 = load float, float* %415
%417 = trunc i64 %414 to i32
%418 = add i32 %328, %417
%419 = sext i32 %418 to i64
%420 = getelementptr inbounds float, float* %6, i64 %419
store float %416, float* %420
%421 = getelementptr inbounds float, float* %415, i64 1
%422 = load float, float* %421
%423 = trunc i64 %414 to i32
%424 = add i32 %423, 1
%425 = add i32 %328, %424
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds float, float* %6, i64 %426
store float %422, float* %427
%428 = getelementptr inbounds float, float* %415, i64 2
%429 = load float, float* %428
%430 = trunc i64 %414 to i32
%431 = add i32 %430, 2
%432 = add i32 %328, %431
%433 = sext i32 %432 to i64
%434 = getelementptr inbounds float, float* %6, i64 %433
store float %429, float* %434
%435 = getelementptr inbounds float, float* %415, i64 3
%436 = load float, float* %435
%437 = trunc i64 %414 to i32
%438 = add i32 %437, 3
%439 = add i32 %328, %438
%440 = sext i32 %439 to i64
%441 = getelementptr inbounds float, float* %6, i64 %440
store float %436, float* %441
%442 = getelementptr inbounds float, float* %415, i64 4
%443 = add nuw nsw i64 %414, 4
%444 = icmp eq i64 %443, %24
br i1 %444, label %445, label %413
445: ; preds = %408, %413, %389, %316
%446 = phi float* [ %318, %316 ], [ %339, %389 ], [ %409, %408 ], [ %442, %413 ]
%447 = getelementptr inbounds float, float* %446, i64 %17
%448 = add nsw i32 %319, %3
%449 = icmp sgt i32 %448, %18
%450 = add i32 %317, 1
br i1 %449, label %215, label %316
451: ; preds = %312, %451
%452 = phi i64 [ %473, %451 ], [ %313, %312 ]
%453 = phi float* [ %472, %451 ], [ %314, %312 ]
%454 = load float, float* %453
%455 = add nsw i64 %452, %220
%456 = getelementptr inbounds float, float* %6, i64 %455
store float %454, float* %456
%457 = getelementptr inbounds float, float* %453, i64 1
%458 = add nsw i64 %452, 1
%459 = load float, float* %457
%460 = add nsw i64 %458, %220
%461 = getelementptr inbounds float, float* %6, i64 %460
store float %459, float* %461
%462 = getelementptr inbounds float, float* %453, i64 2
%463 = add nsw i64 %452, 2
%464 = load float, float* %462
%465 = add nsw i64 %463, %220
%466 = getelementptr inbounds float, float* %6, i64 %465
store float %464, float* %466
%467 = getelementptr inbounds float, float* %453, i64 3
%468 = add nsw i64 %452, 3
%469 = load float, float* %467
%470 = add nsw i64 %468, %220
%471 = getelementptr inbounds float, float* %6, i64 %470
store float %469, float* %471
%472 = getelementptr inbounds float, float* %453, i64 4
%473 = add nsw i64 %452, 4
%474 = icmp eq i64 %473, %25
br i1 %474, label %475, label %451
475: ; preds = %312, %451, %291, %215
%476 = add nuw nsw i64 %59, 1
%477 = icmp eq i64 %476, %22
br i1 %477, label %478, label %58
478: ; preds = %475, %8
ret void
}