Added prefetch to CGEMV and ZGEMV.

Signed-off-by: Shivraj Patil <shivraj.patil@imgtec.com>
This commit is contained in:
Shivraj Patil
2016-12-27 11:33:51 +05:30
parent 8f9975e013
commit a9bf8a781a
4 changed files with 757 additions and 677 deletions

View File

@@ -364,14 +364,25 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
tp0i = tp1i = tp2i = tp3i = zero; \
\
k = 0; \
k_pref = pref_offset; \
x = srcx_org; \
\
for (i = (m >> 3); i--;) \
{ \
PREFETCH(pa0 + k_pref + 16 + 0); \
PREFETCH(pa0 + k_pref + 16 + 8); \
PREFETCH(pa1 + k_pref + 16 + 0); \
PREFETCH(pa1 + k_pref + 16 + 8); \
PREFETCH(pa2 + k_pref + 16 + 0); \
PREFETCH(pa2 + k_pref + 16 + 8); \
PREFETCH(pa3 + k_pref + 16 + 0); \
PREFETCH(pa3 + k_pref + 16 + 8); \
\
CLOAD_X8() \
CGEMV_T_8x4(); \
\
k += 2 * 8; \
k_pref += 2 * 8; \
x += inc_x2 * 8; \
} \
\
@@ -531,7 +542,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alphar, FLOAT alphai,
FLOAT *A, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y,
BLASLONG inc_y, FLOAT *buffer)
{
BLASLONG i, j, k;
BLASLONG i, j, k, k_pref, pref_offset;
FLOAT *pa0, *pa1, *pa2, *pa3;
FLOAT *srcx_org = x;
FLOAT temp0r, temp0i, temp2r, temp2i, temp1r, temp1i, temp3r, temp3i;
@@ -546,6 +557,10 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alphar, FLOAT alphai,
lda2 = 2 * lda;
pref_offset = (uintptr_t)A & (L1_DATA_LINESIZE - 1);
pref_offset = L1_DATA_LINESIZE - pref_offset;
pref_offset = pref_offset / sizeof(FLOAT);
pa0 = A;
pa1 = A + lda2;
pa2 = A + 2 * lda2;