|
|
|
@@ -42,101 +42,53 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT beta, |
|
|
|
FLOAT *dummy2, BLASLONG dummy3, FLOAT *dummy4, BLASLONG dummy5, |
|
|
|
FLOAT *c, BLASLONG ldc){ |
|
|
|
|
|
|
|
|
|
|
|
BLASLONG i, j; |
|
|
|
BLASLONG chunk, remain; |
|
|
|
FLOAT *c_offset1, *c_offset; |
|
|
|
FLOAT ctemp1, ctemp2, ctemp3, ctemp4; |
|
|
|
FLOAT ctemp5, ctemp6, ctemp7, ctemp8; |
|
|
|
|
|
|
|
c_offset = c; |
|
|
|
|
|
|
|
chunk = m >> 3; |
|
|
|
remain = m & 7; |
|
|
|
if (beta == ZERO){ |
|
|
|
|
|
|
|
j = n; |
|
|
|
do { |
|
|
|
c_offset1 = c_offset; |
|
|
|
c_offset += ldc; |
|
|
|
|
|
|
|
i = (m >> 3); |
|
|
|
if (i > 0){ |
|
|
|
do { |
|
|
|
*(c_offset1 + 0) = ZERO; |
|
|
|
*(c_offset1 + 1) = ZERO; |
|
|
|
*(c_offset1 + 2) = ZERO; |
|
|
|
*(c_offset1 + 3) = ZERO; |
|
|
|
*(c_offset1 + 4) = ZERO; |
|
|
|
*(c_offset1 + 5) = ZERO; |
|
|
|
*(c_offset1 + 6) = ZERO; |
|
|
|
*(c_offset1 + 7) = ZERO; |
|
|
|
c_offset1 += 8; |
|
|
|
i --; |
|
|
|
} while (i > 0); |
|
|
|
} |
|
|
|
|
|
|
|
i = (m & 7); |
|
|
|
if (i > 0){ |
|
|
|
do { |
|
|
|
*c_offset1 = ZERO; |
|
|
|
c_offset1 ++; |
|
|
|
i --; |
|
|
|
} while (i > 0); |
|
|
|
} |
|
|
|
j --; |
|
|
|
} while (j > 0); |
|
|
|
|
|
|
|
for(j=n; j>0; j--){ |
|
|
|
c_offset1 = c_offset; |
|
|
|
c_offset += ldc; |
|
|
|
for(i=chunk; i>0; i--){ |
|
|
|
*(c_offset1 + 0) = ZERO; |
|
|
|
*(c_offset1 + 1) = ZERO; |
|
|
|
*(c_offset1 + 2) = ZERO; |
|
|
|
*(c_offset1 + 3) = ZERO; |
|
|
|
*(c_offset1 + 4) = ZERO; |
|
|
|
*(c_offset1 + 5) = ZERO; |
|
|
|
*(c_offset1 + 6) = ZERO; |
|
|
|
*(c_offset1 + 7) = ZERO; |
|
|
|
c_offset1 += 8; |
|
|
|
} |
|
|
|
for(i=remain; i>0; i--){ |
|
|
|
*c_offset1 = ZERO; |
|
|
|
c_offset1 ++; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
|
|
|
|
j = n; |
|
|
|
do { |
|
|
|
c_offset1 = c_offset; |
|
|
|
c_offset += ldc; |
|
|
|
|
|
|
|
i = (m >> 3); |
|
|
|
if (i > 0){ |
|
|
|
do { |
|
|
|
ctemp1 = *(c_offset1 + 0); |
|
|
|
ctemp2 = *(c_offset1 + 1); |
|
|
|
ctemp3 = *(c_offset1 + 2); |
|
|
|
ctemp4 = *(c_offset1 + 3); |
|
|
|
ctemp5 = *(c_offset1 + 4); |
|
|
|
ctemp6 = *(c_offset1 + 5); |
|
|
|
ctemp7 = *(c_offset1 + 6); |
|
|
|
ctemp8 = *(c_offset1 + 7); |
|
|
|
|
|
|
|
ctemp1 *= beta; |
|
|
|
ctemp2 *= beta; |
|
|
|
ctemp3 *= beta; |
|
|
|
ctemp4 *= beta; |
|
|
|
ctemp5 *= beta; |
|
|
|
ctemp6 *= beta; |
|
|
|
ctemp7 *= beta; |
|
|
|
ctemp8 *= beta; |
|
|
|
|
|
|
|
*(c_offset1 + 0) = ctemp1; |
|
|
|
*(c_offset1 + 1) = ctemp2; |
|
|
|
*(c_offset1 + 2) = ctemp3; |
|
|
|
*(c_offset1 + 3) = ctemp4; |
|
|
|
*(c_offset1 + 4) = ctemp5; |
|
|
|
*(c_offset1 + 5) = ctemp6; |
|
|
|
*(c_offset1 + 6) = ctemp7; |
|
|
|
*(c_offset1 + 7) = ctemp8; |
|
|
|
c_offset1 += 8; |
|
|
|
i --; |
|
|
|
} while (i > 0); |
|
|
|
} |
|
|
|
|
|
|
|
i = (m & 7); |
|
|
|
if (i > 0){ |
|
|
|
do { |
|
|
|
ctemp1 = *c_offset1; |
|
|
|
ctemp1 *= beta; |
|
|
|
*c_offset1 = ctemp1; |
|
|
|
c_offset1 ++; |
|
|
|
i --; |
|
|
|
} while (i > 0); |
|
|
|
} |
|
|
|
j --; |
|
|
|
} while (j > 0); |
|
|
|
|
|
|
|
for(j=n; j>0; j--){ |
|
|
|
c_offset1 = c_offset; |
|
|
|
c_offset += ldc; |
|
|
|
for(i=chunk; i>0; i--){ |
|
|
|
*(c_offset1 + 0) *= beta; |
|
|
|
*(c_offset1 + 1) *= beta; |
|
|
|
*(c_offset1 + 2) *= beta; |
|
|
|
*(c_offset1 + 3) *= beta; |
|
|
|
*(c_offset1 + 4) *= beta; |
|
|
|
*(c_offset1 + 5) *= beta; |
|
|
|
*(c_offset1 + 6) *= beta; |
|
|
|
*(c_offset1 + 7) *= beta; |
|
|
|
c_offset1 += 8; |
|
|
|
} |
|
|
|
for(i=remain; i>0; i--){ |
|
|
|
*c_offset1 *= beta; |
|
|
|
c_offset1 ++; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return 0; |
|
|
|
}; |