Skip to content

Commit ae70b91

Browse files
committed
Refs #929. Deal with zero and NaNs for scale.
1 parent 9ea0144 commit ae70b91

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

kernel/power/KERNEL.POWER8

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ DROTKERNEL = drot.c
137137
#
138138
SSCALKERNEL = sscal.c
139139
DSCALKERNEL = dscal.c
140-
#CSCALKERNEL = ../arm/zscal.c
140+
CSCALKERNEL = zscal.c
141141
ZSCALKERNEL = zscal.c
142142
#
143143
SSWAPKERNEL = sswap.c

kernel/power/zscal.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3939
#pragma GCC optimize "O1"
4040

4141
#if defined(POWER8)
42+
#if defined(DOUBLE)
4243
#include "zscal_microk_power8.c"
4344
#endif
45+
#endif
4446

4547

4648
#ifndef HAVE_KERNEL_8
@@ -123,6 +125,21 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r,FLOAT da_i, F
123125
if ( inc_x <= 0 )
124126
return(0);
125127

128+
if (da_r == ZERO && da_i == ZERO) {
129+
//clear the vector and return
130+
if (inc_x == 1) {
131+
memset(x, 0, n*COMPSIZE*SIZE);
132+
}else{
133+
inc_x2 = 2 * inc_x;
134+
for(i=0; i<n; i++){
135+
x[ip]=ZERO;
136+
x[ip+1]=ZERO;
137+
ip += inc_x2;
138+
}
139+
}
140+
return 0;
141+
}
142+
126143
if ( inc_x == 1 )
127144
{
128145

0 commit comments

Comments
 (0)