void kernel_dgemm_dtrsm_nt_4x4_lib4(int tri, int kadd, int ksub, double *Ap,
                                    double *Bp, double *Am, double *Bm,
                                    double *C, double *D, double *fact,
                                    int alg) {
  int ki_add = kadd / 4;
  int kl_add = kadd % 4;
  int ki_sub = ksub / 4;
  __asm__ volatile(
      "                                \n\t"
      "                                \n\t"
      "movq          %3, %%rax         \n\t"
      "movq          %4, %%rbx         \n\t"
      "                                \n\t"
      "                                \n\t"
      "xorpd     %%xmm3,  %%xmm3       \n\t"
      "movaps    %%xmm3,  %%xmm4       \n\t"
      "movaps    %%xmm3,  %%xmm5       \n\t"
      "movaps    %%xmm3,  %%xmm6       \n\t"
      "movaps    %%xmm3,  %%xmm7       \n\t"
      "movaps    %%xmm3,  %%xmm8       \n\t"
      "movaps    %%xmm3,  %%xmm9       \n\t"
      "movaps    %%xmm3, %%xmm10       \n\t"
      "movaps    %%xmm3, %%xmm11       \n\t"
      "movaps    %%xmm3, %%xmm12       \n\t"
      "movaps    %%xmm3, %%xmm13       \n\t"
      "movaps    %%xmm3, %%xmm14       \n\t"
      "movaps    %%xmm3, %%xmm15       \n\t"
      "                                \n\t"
      "                                \n\t"
      "movl      %0, %%esi             \n\t"
      "movl      %1, %%ecx             \n\t"
      "addl      %%esi, %%ecx          \n\t"
      "testl     %%ecx, %%ecx          \n\t"
      "je        .DCONSIDERSUB         \n\t"
      "                                \n\t"
      "                                \n\t"
      "movaps        0(%%rax), %%xmm0  \n\t"
      "movaps       16(%%rax), %%xmm1  \n\t"
      "movaps        0(%%rbx), %%xmm2  \n\t"
      "                                \n\t"
      "                                \n\t"
      "movl      %11, %%ecx            \n\t"
      "cmpl      $1,  %%ecx            \n\t"
      "jne       .DCONSIDERLOOPADD     \n\t"
      "                                \n\t"
      "                                \n\t"
      "testl  %%esi, %%esi             \n\t"
      "je     .DTRIADD                 \n\t"
      "                                \n\t"
      "                                \n\t"
      "movaps       16(%%rbx), %%xmm6  \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulsd   %%xmm0, %%xmm2          \n\t"
      "                                \n\t"
      "mulsd   %%xmm0, %%xmm7          \n\t"
      "                                \n\t"
      "addsd   %%xmm2, %%xmm8          \n\t"
      "movaps       32(%%rbx), %%xmm2  \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulsd   %%xmm0, %%xmm6          \n\t"
      "                                \n\t"
      "addsd   %%xmm7, %%xmm9          \n\t"
      "mulsd   %%xmm0, %%xmm4          \n\t"
      "movaps       32(%%rax), %%xmm0  \n\t"
      "                                \n\t"
      "                                \n\t"
      "addsd   %%xmm6, %%xmm10         \n\t"
      "movaps       48(%%rbx), %%xmm6  \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "                                \n\t"
      "addsd   %%xmm4, %%xmm11         \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps       64(%%rbx), %%xmm2  \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       64(%%rax), %%xmm0  \n\t"
      "movaps       80(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "movaps       80(%%rbx), %%xmm6  \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulsd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulsd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps       96(%%rbx), %%xmm2  \n\t"
      "addsd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulsd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "addsd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       96(%%rax), %%xmm0  \n\t"
      "mulsd   %%xmm1, %%xmm5          \n\t"
      "movaps      112(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "movaps      112(%%rbx), %%xmm6  \n\t"
      "addsd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "addq      $128, %%rax           \n\t"
      "                                \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addsd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "addq      $128, %%rbx           \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps         (%%rbx), %%xmm2  \n\t"
      "addpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "decl    %%esi                   \n\t"
      "addpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps         (%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       16(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "jmp     .DCONSIDERLOOPADD       \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DTRIADD:                       \n\t"
      "                                \n\t"
      "movl    %1, %%esi               \n\t"
      "                                \n\t"
      "                                \n\t"
      "movaps       16(%%rbx), %%xmm6  \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulsd   %%xmm0, %%xmm2          \n\t"
      "addsd   %%xmm2, %%xmm8          \n\t"
      "                                \n\t"
      "mulsd   %%xmm0, %%xmm7          \n\t"
      "addsd   %%xmm7, %%xmm9          \n\t"
      "                                \n\t"
      "movaps       32(%%rbx), %%xmm2  \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulsd   %%xmm0, %%xmm6          \n\t"
      "addsd   %%xmm6, %%xmm10         \n\t"
      "                                \n\t"
      "mulsd   %%xmm0, %%xmm4          \n\t"
      "addsd   %%xmm4, %%xmm11         \n\t"
      "movaps       32(%%rax), %%xmm0  \n\t"
      "                                \n\t"
      "                                \n\t"
      "cmpl    $2, %%esi               \n\t"
      "jl     .DCONSIDERSUB_NOCLEAN    \n\t"
      "                                \n\t"
      "                                \n\t"
      "movaps       48(%%rbx), %%xmm6  \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "                                \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "                                \n\t"
      "movaps       64(%%rbx), %%xmm2  \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "                                \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "movaps       64(%%rax), %%xmm0  \n\t"
      "movaps       80(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "je     .DCONSIDERSUB_NOCLEAN    \n\t"
      "                                \n\t"
      "                                \n\t"
      "movaps       80(%%rbx), %%xmm6  \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulsd   %%xmm1, %%xmm3          \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "addsd   %%xmm3, %%xmm12         \n\t"
      "                                \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulsd   %%xmm1, %%xmm5          \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "addsd   %%xmm5, %%xmm13         \n\t"
      "                                \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulsd   %%xmm1, %%xmm3          \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "addsd   %%xmm3, %%xmm14         \n\t"
      "                                \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "mulsd   %%xmm1, %%xmm5          \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addsd   %%xmm5, %%xmm15         \n\t"
      "                                \n\t"
      "                                \n\t"
      "jmp    .DCONSIDERSUB_NOCLEAN    \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DCONSIDERLOOPADD:              \n\t"
      "                                \n\t"
      "                                \n\t"
      "testl  %%esi, %%esi             \n\t"
      "je     .DCONSIDERADD            \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DLOOPADD:                      \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "movaps       16(%%rbx), %%xmm6  \n\t"
      "addpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps       32(%%rbx), %%xmm2  \n\t"
      "addpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "addpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       32(%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       48(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "movaps       48(%%rbx), %%xmm6  \n\t"
      "addpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps       64(%%rbx), %%xmm2  \n\t"
      "addpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "addpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       64(%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       80(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "movaps       80(%%rbx), %%xmm6  \n\t"
      "addpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps       96(%%rbx), %%xmm2  \n\t"
      "addpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "addpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       96(%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps      112(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "movaps      112(%%rbx), %%xmm6  \n\t"
      "addpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addq      $128, %%rax           \n\t"
      "                                \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "addq      $128, %%rbx           \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps         (%%rbx), %%xmm2  \n\t"
      "addpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "decl    %%esi                   \n\t"
      "addpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps         (%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       16(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "jne    .DLOOPADD                \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DCONSIDERADD:                  \n\t"
      "                                \n\t"
      "movl      %1, %%esi             \n\t"
      "testl  %%esi, %%esi             \n\t"
      "je     .DCONSIDERSUB            \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DLOOPLEFT:                     \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "movaps       16(%%rbx), %%xmm6  \n\t"
      "addpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "addpd   %%xmm2, %%xmm8          \n\t"
      "movaps       32(%%rbx), %%xmm2  \n\t"
      "addpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addpd   %%xmm7, %%xmm9          \n\t"
      "addpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       32(%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       48(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "addq          $32, %%rax        \n\t"
      "addq          $32, %%rbx        \n\t"
      "                                \n\t"
      "                                \n\t"
      "decl    %%esi                   \n\t"
      "jne    .DLOOPLEFT               \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DCONSIDERSUB:                  \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd   %%xmm6, %%xmm10         \n\t"
      "addpd   %%xmm3, %%xmm14         \n\t"
      "addpd   %%xmm4, %%xmm11         \n\t"
      "addpd   %%xmm5, %%xmm15         \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DCONSIDERSUB_NOCLEAN:          \n\t"
      "                                \n\t"
      "                                \n\t"
      "xorpd     %%xmm3,  %%xmm3       \n\t"
      "movaps    %%xmm3,  %%xmm4       \n\t"
      "movaps    %%xmm3,  %%xmm5       \n\t"
      "movaps    %%xmm3,  %%xmm6       \n\t"
      "                                \n\t"
      "                                \n\t"
      "movl   %2, %%esi                \n\t"
      "testl  %%esi, %%esi             \n\t"
      "je     .DPOSTACC                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movq   %9,  %%rax               \n\t"
      "movq   %10, %%rbx               \n\t"
      "                                \n\t"
      "movaps        0(%%rax), %%xmm0  \n\t"
      "movaps       16(%%rax), %%xmm1  \n\t"
      "movaps        0(%%rbx), %%xmm2  \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DLOOPSUB:                      \n\t"
      "                                \n\t"
      "subpd   %%xmm6, %%xmm10         \n\t"
      "movaps       16(%%rbx), %%xmm6  \n\t"
      "subpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "subpd   %%xmm4, %%xmm11         \n\t"
      "subpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "subpd   %%xmm2, %%xmm8          \n\t"
      "movaps       32(%%rbx), %%xmm2  \n\t"
      "subpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "subpd   %%xmm7, %%xmm9          \n\t"
      "subpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       32(%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       48(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "subpd   %%xmm6, %%xmm10         \n\t"
      "movaps       48(%%rbx), %%xmm6  \n\t"
      "subpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "subpd   %%xmm4, %%xmm11         \n\t"
      "subpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "subpd   %%xmm2, %%xmm8          \n\t"
      "movaps       64(%%rbx), %%xmm2  \n\t"
      "subpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "subpd   %%xmm7, %%xmm9          \n\t"
      "subpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       64(%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       80(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "subpd   %%xmm6, %%xmm10         \n\t"
      "movaps       80(%%rbx), %%xmm6  \n\t"
      "subpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "subpd   %%xmm4, %%xmm11         \n\t"
      "subpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "subpd   %%xmm2, %%xmm8          \n\t"
      "movaps       96(%%rbx), %%xmm2  \n\t"
      "subpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "subpd   %%xmm7, %%xmm9          \n\t"
      "subpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps       96(%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps      112(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "subpd   %%xmm6, %%xmm10         \n\t"
      "movaps      112(%%rbx), %%xmm6  \n\t"
      "subpd   %%xmm3, %%xmm14         \n\t"
      "movaps  %%xmm2, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm2, %%xmm7  \n\t"
      "mulpd   %%xmm0, %%xmm2          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "addq      $128, %%rax           \n\t"
      "                                \n\t"
      "subpd   %%xmm4, %%xmm11         \n\t"
      "subpd   %%xmm5, %%xmm15         \n\t"
      "movaps  %%xmm7, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm7          \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "                                \n\t"
      "addq      $128, %%rbx           \n\t"
      "                                \n\t"
      "subpd   %%xmm2, %%xmm8          \n\t"
      "movaps         (%%rbx), %%xmm2  \n\t"
      "subpd   %%xmm3, %%xmm12         \n\t"
      "movaps  %%xmm6, %%xmm3          \n\t"
      "pshufd   $0x4e, %%xmm6, %%xmm4  \n\t"
      "mulpd   %%xmm0, %%xmm6          \n\t"
      "mulpd   %%xmm1, %%xmm3          \n\t"
      "                                \n\t"
      "                                \n\t"
      "subpd   %%xmm7, %%xmm9          \n\t"
      "decl    %%esi                   \n\t"
      "subpd   %%xmm5, %%xmm13         \n\t"
      "movaps  %%xmm4, %%xmm5          \n\t"
      "mulpd   %%xmm0, %%xmm4          \n\t"
      "movaps         (%%rax), %%xmm0  \n\t"
      "mulpd   %%xmm1, %%xmm5          \n\t"
      "movaps       16(%%rax), %%xmm1  \n\t"
      "                                \n\t"
      "                                \n\t"
      "jne    .DLOOPSUB                \n\t"
      "                                \n\t"
      "                                \n\t"
      "subpd   %%xmm6, %%xmm10         \n\t"
      "subpd   %%xmm3, %%xmm14         \n\t"
      "subpd   %%xmm4, %%xmm11         \n\t"
      "subpd   %%xmm5, %%xmm15         \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DPOSTACC:                      \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movaps   %%xmm8,  %%xmm0        \n\t"
      "movsd    %%xmm9,  %%xmm8        \n\t"
      "movsd    %%xmm0,  %%xmm9        \n\t"
      "                                \n\t"
      "movaps  %%xmm10,  %%xmm0        \n\t"
      "movsd   %%xmm11, %%xmm10        \n\t"
      "movsd    %%xmm0, %%xmm11        \n\t"
      "                                \n\t"
      "movaps  %%xmm12,  %%xmm0        \n\t"
      "movsd   %%xmm13, %%xmm12        \n\t"
      "movsd    %%xmm0, %%xmm13        \n\t"
      "                                \n\t"
      "movaps  %%xmm14,  %%xmm0        \n\t"
      "movsd   %%xmm15, %%xmm14        \n\t"
      "movsd    %%xmm0, %%xmm15        \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movl      %8, %%esi             \n\t"
      "testl  %%esi, %%esi             \n\t"
      "je     .DSOLVE                  \n\t"
      "                                \n\t"
      "                                \n\t"
      "movq   %5, %%rax                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movaps  (%%rax),   %%xmm0       \n\t"
      "movaps  32(%%rax), %%xmm1       \n\t"
      "movaps  64(%%rax), %%xmm2       \n\t"
      "movaps  96(%%rax), %%xmm3       \n\t"
      "movaps  16(%%rax), %%xmm4       \n\t"
      "movaps  48(%%rax), %%xmm5       \n\t"
      "movaps  80(%%rax), %%xmm6       \n\t"
      "movaps 112(%%rax), %%xmm7       \n\t"
      "                                \n\t"
      "                                \n\t"
      "addpd  %%xmm0, %%xmm9           \n\t"
      "addpd  %%xmm1, %%xmm8           \n\t"
      "addpd  %%xmm2, %%xmm11          \n\t"
      "addpd  %%xmm3, %%xmm10          \n\t"
      "addpd  %%xmm4, %%xmm13          \n\t"
      "addpd  %%xmm5, %%xmm12          \n\t"
      "addpd  %%xmm6, %%xmm15          \n\t"
      "addpd  %%xmm7, %%xmm14          \n\t"
      "                                \n\t"
      "                                \n\t"
      ".DSOLVE:                        \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movq   %7, %%rax                \n\t"
      "movq   %6, %%rbx                \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movddup (%%rax), %%xmm0         \n\t"
      "                                \n\t"
      "mulpd   %%xmm0, %%xmm9          \n\t"
      "mulpd   %%xmm0, %%xmm13          \n\t"
      "                                \n\t"
      "movaps	%%xmm9,  (%%rbx)          \n\t"
      "movaps	%%xmm13, 16(%%rbx)        \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movddup 8(%%rax), %%xmm0         \n\t"
      "movddup 16(%%rax), %%xmm1         \n\t"
      "                                \n\t"
      "movaps  %%xmm0,  %%xmm4         \n\t"
      "mulpd   %%xmm9, %%xmm0          \n\t"
      "mulpd   %%xmm13, %%xmm4          \n\t"
      "subpd   %%xmm0, %%xmm8          \n\t"
      "subpd   %%xmm4, %%xmm12          \n\t"
      "                                \n\t"
      "mulpd   %%xmm1, %%xmm8          \n\t"
      "mulpd   %%xmm1, %%xmm12          \n\t"
      "                                \n\t"
      "movaps	%%xmm8,  32(%%rbx)          \n\t"
      "movaps	%%xmm12, 48(%%rbx)        \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movddup 24(%%rax), %%xmm0       \n\t"
      "movddup 32(%%rax), %%xmm1       \n\t"
      "movddup 40(%%rax), %%xmm2       \n\t"
      "                                \n\t"
      "movaps  %%xmm0,  %%xmm4         \n\t"
      "mulpd   %%xmm9, %%xmm0          \n\t"
      "mulpd   %%xmm13, %%xmm4          \n\t"
      "subpd   %%xmm0, %%xmm11         \n\t"
      "subpd   %%xmm4, %%xmm15         \n\t"
      "                                \n\t"
      "movaps  %%xmm1,  %%xmm4         \n\t"
      "mulpd   %%xmm8, %%xmm1          \n\t"
      "mulpd   %%xmm12, %%xmm4          \n\t"
      "subpd   %%xmm1, %%xmm11         \n\t"
      "subpd   %%xmm4, %%xmm15         \n\t"
      "                                \n\t"
      "mulpd   %%xmm2, %%xmm11         \n\t"
      "mulpd   %%xmm2, %%xmm15         \n\t"
      "                                \n\t"
      "movaps	%%xmm11, 64(%%rbx)       \n\t"
      "movaps	%%xmm15, 80(%%rbx)       \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      "movddup 48(%%rax), %%xmm0       \n\t"
      "movddup 56(%%rax), %%xmm1       \n\t"
      "movddup 64(%%rax), %%xmm2       \n\t"
      "movddup 72(%%rax), %%xmm3       \n\t"
      "                                \n\t"
      "movaps  %%xmm0,  %%xmm4         \n\t"
      "mulpd   %%xmm9, %%xmm0          \n\t"
      "mulpd   %%xmm13, %%xmm4          \n\t"
      "subpd   %%xmm0, %%xmm10         \n\t"
      "subpd   %%xmm4, %%xmm14         \n\t"
      "                                \n\t"
      "movaps  %%xmm1,  %%xmm4         \n\t"
      "mulpd   %%xmm8, %%xmm1          \n\t"
      "mulpd   %%xmm12, %%xmm4          \n\t"
      "subpd   %%xmm1, %%xmm10         \n\t"
      "subpd   %%xmm4, %%xmm14         \n\t"
      "                                \n\t"
      "movaps  %%xmm2,  %%xmm4         \n\t"
      "mulpd   %%xmm11, %%xmm2          \n\t"
      "mulpd   %%xmm15, %%xmm4          \n\t"
      "subpd   %%xmm2, %%xmm10         \n\t"
      "subpd   %%xmm4, %%xmm14         \n\t"
      "                                \n\t"
      "mulpd   %%xmm3, %%xmm10         \n\t"
      "mulpd   %%xmm3, %%xmm14         \n\t"
      "                                \n\t"
      "movaps	%%xmm10, 96(%%rbx)       \n\t"
      "movaps	%%xmm14, 112(%%rbx)       \n\t"
      "                                \n\t"
      "                                \n\t"
      "                                \n\t"
      :
      : "m"(ki_add), "m"(kl_add), "m"(ki_sub), "m"(Ap), "m"(Bp), "m"(C), "m"(D),
        "m"(fact), "m"(alg), "m"(Am), "m"(Bm), "m"(tri)
      : "rax", "rbx", "rcx", "rdx", "rsi", "xmm0", "xmm1", "xmm2", "xmm3",
        "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11",
        "xmm12", "xmm13", "xmm14", "xmm15", "memory");
}


x86 assembly (clang, -O0):
<kernel_dgemm_dtrsm_nt_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %edx,-0x38(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x3c(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%rbx
xorpd  %xmm3,%xmm3
movaps %xmm3,%xmm4
movaps %xmm3,%xmm5
movaps %xmm3,%xmm6
movaps %xmm3,%xmm7
movaps %xmm3,%xmm8
movaps %xmm3,%xmm9
movaps %xmm3,%xmm10
movaps %xmm3,%xmm11
movaps %xmm3,%xmm12
movaps %xmm3,%xmm13
movaps %xmm3,%xmm14
movaps %xmm3,%xmm15
mov    -0x34(%rbp),%esi
mov    -0x38(%rbp),%ecx
add    %esi,%ecx
test   %ecx,%ecx
je     165c <.DCONSIDERSUB>
movaps (%rax),%xmm0
movaps 0x10(%rax),%xmm1
movaps (%rbx),%xmm2
mov    -0xc(%rbp),%ecx
cmp    $0x1,%ecx
jne    1400 <.DCONSIDERLOOPADD>
test   %esi,%esi
je     130f <.DTRIADD>
movaps 0x10(%rbx),%xmm6
pshufd $0x4e,%xmm2,%xmm7
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm7
addsd  %xmm2,%xmm8
movaps 0x20(%rbx),%xmm2
pshufd $0x4e,%xmm6,%xmm4
mulsd  %xmm0,%xmm6
addsd  %xmm7,%xmm9
mulsd  %xmm0,%xmm4
movaps 0x20(%rax),%xmm0
addsd  %xmm6,%xmm10
movaps 0x30(%rbx),%xmm6
pshufd $0x4e,%xmm2,%xmm7
mulpd  %xmm0,%xmm2
addsd  %xmm4,%xmm11
mulpd  %xmm0,%xmm7
addpd  %xmm2,%xmm8
movaps 0x40(%rbx),%xmm2
pshufd $0x4e,%xmm6,%xmm4
mulpd  %xmm0,%xmm6
addpd  %xmm7,%xmm9
mulpd  %xmm0,%xmm4
movaps 0x40(%rax),%xmm0
movaps 0x50(%rax),%xmm1
addpd  %xmm6,%xmm10
movaps 0x50(%rbx),%xmm6
movaps %xmm2,%xmm3
pshufd $0x4e,%xmm2,%xmm7
mulpd  %xmm0,%xmm2
mulsd  %xmm1,%xmm3
addpd  %xmm4,%xmm11
movaps %xmm7,%xmm5
mulpd  %xmm0,%xmm7
mulsd  %xmm1,%xmm5
addpd  %xmm2,%xmm8
movaps 0x60(%rbx),%xmm2
addsd  %xmm3,%xmm12
movaps %xmm6,%xmm3
pshufd $0x4e,%xmm6,%xmm4
mulpd  %xmm0,%xmm6
mulsd  %xmm1,%xmm3
addpd  %xmm7,%xmm9
addsd  %xmm5,%xmm13
movaps %xmm4,%xmm5
mulpd  %xmm0,%xmm4
movaps 0x60(%rax),%xmm0
mulsd  %xmm1,%xmm5
movaps 0x70(%rax),%xmm1
addpd  %xmm6,%xmm10
movaps 0x70(%rbx),%xmm6
addsd  %xmm3,%xmm14
movaps %xmm2,%xmm3
pshufd $0x4e,%xmm2,%xmm7
mulpd  %xmm0,%xmm2
mulpd  %xmm1,%xmm3
add    $0x80,%rax
addpd  %xmm4,%xmm11
addsd  %xmm5,%xmm15
movaps %xmm7,%xmm5
mulpd  %xmm0,%xmm7
mulpd  %xmm1,%xmm5
add    $0x80,%rbx
addpd  %xmm2,%xmm8
movaps (%rbx),%xmm2
addpd  %xmm3,%xmm12
movaps %xmm6,%xmm3
pshufd $0x4e,%xmm6,%xmm4
mulpd  %xmm0,%xmm6
mulpd  %xmm1,%xmm3
addpd  %xmm7,%xmm9
dec    %esi
addpd  %xmm5,%xmm13
movaps %xmm4,%xmm5
mulpd  %xmm0,%xmm4
movaps (%rax),%xmm0
mulpd  %xmm1,%xmm5
movaps 0x10(%rax),%xmm1
jmp    1400 <.DCONSIDERLOOPADD>

x86 assembly (clang, -O2):
<kernel_dgemm_dtrsm_nt_4x4_lib4>:
push   %rbx
mov    %edi,-0x1c(%rsp)
mov    %rcx,-0x8(%rsp)
mov    %r8,-0x10(%rsp)
mov    %r9,-0x18(%rsp)
lea    0x3(%rsi),%eax
test   %esi,%esi
cmovns %esi,%eax
mov    %eax,%ecx
sar    $0x2,%ecx
mov    %ecx,-0x20(%rsp)
and    $0xfffffffc,%eax
sub    %eax,%esi
lea    0x3(%rdx),%eax
test   %edx,%edx
cmovns %edx,%eax
mov    %esi,-0x24(%rsp)
sar    $0x2,%eax
mov    %eax,-0x28(%rsp)
mov    -0x8(%rsp),%rax
mov    -0x10(%rsp),%rbx
xorpd  %xmm3,%xmm3
movaps %xmm3,%xmm4
movaps %xmm3,%xmm5
movaps %xmm3,%xmm6
movaps %xmm3,%xmm7
movaps %xmm3,%xmm8
movaps %xmm3,%xmm9
movaps %xmm3,%xmm10
movaps %xmm3,%xmm11
movaps %xmm3,%xmm12
movaps %xmm3,%xmm13
movaps %xmm3,%xmm14
movaps %xmm3,%xmm15
mov    -0x20(%rsp),%esi
mov    -0x24(%rsp),%ecx
add    %esi,%ecx
test   %ecx,%ecx
je     1641 <.DCONSIDERSUB>
movaps (%rax),%xmm0
movaps 0x10(%rax),%xmm1
movaps (%rbx),%xmm2
mov    -0x1c(%rsp),%ecx
cmp    $0x1,%ecx
jne    13ec <.DCONSIDERLOOPADD>
test   %esi,%esi
je     12fa <.DTRIADD>
movaps 0x10(%rbx),%xmm6
pshufd $0x4e,%xmm2,%xmm7
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm7
addsd  %xmm2,%xmm8
movaps 0x20(%rbx),%xmm2
pshufd $0x4e,%xmm6,%xmm4
mulsd  %xmm0,%xmm6
addsd  %xmm7,%xmm9
mulsd  %xmm0,%xmm4
movaps 0x20(%rax),%xmm0
addsd  %xmm6,%xmm10
movaps 0x30(%rbx),%xmm6
pshufd $0x4e,%xmm2,%xmm7
mulpd  %xmm0,%xmm2
addsd  %xmm4,%xmm11
mulpd  %xmm0,%xmm7
addpd  %xmm2,%xmm8
movaps 0x40(%rbx),%xmm2
pshufd $0x4e,%xmm6,%xmm4
mulpd  %xmm0,%xmm6
addpd  %xmm7,%xmm9
mulpd  %xmm0,%xmm4
movaps 0x40(%rax),%xmm0
movaps 0x50(%rax),%xmm1
addpd  %xmm6,%xmm10
movaps 0x50(%rbx),%xmm6
movaps %xmm2,%xmm3
pshufd $0x4e,%xmm2,%xmm7
mulpd  %xmm0,%xmm2
mulsd  %xmm1,%xmm3
addpd  %xmm4,%xmm11
movaps %xmm7,%xmm5
mulpd  %xmm0,%xmm7
mulsd  %xmm1,%xmm5
addpd  %xmm2,%xmm8
movaps 0x60(%rbx),%xmm2
addsd  %xmm3,%xmm12
movaps %xmm6,%xmm3
pshufd $0x4e,%xmm6,%xmm4
mulpd  %xmm0,%xmm6
mulsd  %xmm1,%xmm3
addpd  %xmm7,%xmm9
addsd  %xmm5,%xmm13
movaps %xmm4,%xmm5
mulpd  %xmm0,%xmm4
movaps 0x60(%rax),%xmm0
mulsd  %xmm1,%xmm5
movaps 0x70(%rax),%xmm1
addpd  %xmm6,%xmm10
movaps 0x70(%rbx),%xmm6
addsd  %xmm3,%xmm14
movaps %xmm2,%xmm3
pshufd $0x4e,%xmm2,%xmm7
mulpd  %xmm0,%xmm2
mulpd  %xmm1,%xmm3
add    $0x80,%rax
addpd  %xmm4,%xmm11
addsd  %xmm5,%xmm15
movaps %xmm7,%xmm5
mulpd  %xmm0,%xmm7
mulpd  %xmm1,%xmm5
add    $0x80,%rbx
addpd  %xmm2,%xmm8
movaps (%rbx),%xmm2
addpd  %xmm3,%xmm12
movaps %xmm6,%xmm3
pshufd $0x4e,%xmm6,%xmm4
mulpd  %xmm0,%xmm6
mulpd  %xmm1,%xmm3
addpd  %xmm7,%xmm9
dec    %esi
addpd  %xmm5,%xmm13
movaps %xmm4,%xmm5
mulpd  %xmm0,%xmm4
movaps (%rax),%xmm0
mulpd  %xmm1,%xmm5
movaps 0x10(%rax),%xmm1
jmp    13ec <.DCONSIDERLOOPADD>

LLVM IR (-O0):
define void @kernel_dgemm_dtrsm_nt_4x4_lib4(i32 %0, i32 %1, i32 %2, double* %3, double* %4, double* %5, double* %6, double* %7, double* %8, double* %9, i32 %10) {
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca double*
%20 = alloca double*
%21 = alloca double*
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
store i32 %0, i32* %12
store i32 %1, i32* %13
store i32 %2, i32* %14
store double* %3, double** %15
store double* %4, double** %16
store double* %5, double** %17
store double* %6, double** %18
store double* %7, double** %19
store double* %8, double** %20
store double* %9, double** %21
store i32 %10, i32* %22
%26 = load i32, i32* %13
%27 = sdiv i32 %26, 4
store i32 %27, i32* %23
%28 = load i32, i32* %13
%29 = srem i32 %28, 4
store i32 %29, i32* %24
%30 = load i32, i32* %14
%31 = sdiv i32 %30, 4
store i32 %31, i32* %25
ret void
}

LLVM IR (-O2):
define void @kernel_dgemm_dtrsm_nt_4x4_lib4(i32 %0, i32 %1, i32 %2, double* %3, double* %4, double* %5, double* %6, double* %7, double* %8, double* %9, i32 %10) {
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca double*
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
store i32 %0, i32* %12
store double* %3, double** %13
store double* %4, double** %14
store double* %5, double** %15
store double* %6, double** %16
store double* %7, double** %17
store double* %8, double** %18
store double* %9, double** %19
store i32 %10, i32* %20
%24 = bitcast i32* %21 to i8*
%25 = sdiv i32 %1, 4
store i32 %25, i32* %21
%26 = bitcast i32* %22 to i8*
%27 = srem i32 %1, 4
store i32 %27, i32* %22
%28 = bitcast i32* %23 to i8*
%29 = sdiv i32 %2, 4
store i32 %29, i32* %23
ret void
}