Skip to content

Commit 8ac87c1

Browse files
authored
Implement DSDOT with unchanged sdot microkernels
1 parent c460027 commit 8ac87c1

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

kernel/x86_64/sdot.c

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,11 @@ static void sdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d)
6868

6969
#endif
7070

71+
#if defined (DSDOT)
72+
double CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
73+
#else
7174
FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
75+
#endif
7276
{
7377
BLASLONG i=0;
7478
BLASLONG ix=0,iy=0;
@@ -91,12 +95,19 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
9195
i = n1;
9296
while(i < n)
9397
{
94-
98+
#if defined(DSDOT)
99+
dot += (double)y[i] * (double)x[i] ;
100+
#else
95101
dot += y[i] * x[i] ;
102+
#endif
96103
i++ ;
97104

98105
}
106+
#if defined(DSDOT)
107+
dot+=(double)mydot;
108+
#else
99109
dot+=mydot;
110+
#endif
100111
return(dot);
101112

102113

@@ -106,8 +117,11 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
106117

107118
while(i < n1)
108119
{
109-
120+
#if defined (DSDOT)
121+
dot += (double)y[iy] * (double)x[ix] + (double)y[iy+inc_y] * (double)x[ix+inc_x];
122+
#else
110123
dot += y[iy] * x[ix] + y[iy+inc_y] * x[ix+inc_x];
124+
#endif
111125
ix += inc_x*2 ;
112126
iy += inc_y*2 ;
113127
i+=2 ;
@@ -116,8 +130,11 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
116130

117131
while(i < n)
118132
{
119-
133+
#if defined (DSDOT)
134+
dot += (double)y[iy] * (double)x[ix] ;
135+
#else
120136
dot += y[iy] * x[ix] ;
137+
#endif
121138
ix += inc_x ;
122139
iy += inc_y ;
123140
i++ ;

0 commit comments

Comments
 (0)