     k -= kb;
   }
 
-  for (int l = 0; l < k; l++) {
-    saxpy((trans == CBlasNoTrans) ? A[0] : a[ti][l], (trans == CBlasNoTrans) ? b[l] : &b[l][tj], x);
-    A += lda;
+  if (trans == CBlasNoTrans) {
+    for (int l = 0; l < k; l++) {
+      saxpy(A[0], b[l], x);
+      A += lda;
+    }
+  }
+  else {
+    for (int l = 0; l < k; l++)
+      saxpy(a[ti][l], &b[l][tj], x);
   }
 
   // For Upper/Trans and Lower/NoTrans process diagonal last

            saxpy(1.0f, (trans == CBlasNoTrans) ? b[ll] : &b[ll][tj], x);
          else if (ti < l)
            saxpy((trans == CBlasNoTrans) ? A[0] : a[ti][ll], (trans == CBlasNoTrans) ? b[ll] : &b[ll][tj], x);
          A += lda;
          l++;
        }
      }

      for (int ll = 0; ll < k; ll++) {
        if (ti <= l++)
          saxpy((trans == CBlasNoTrans) ? A[0] : a[ti][ll], (trans == CBlasNoTrans) ? b[ll] : &b[ll][tj], x);
        if (trans == CBlasNoTrans)
          A += lda;
      }
    }
    else {
