@@ -53,8 +53,8 @@ PROLOGUE
53
53
#endif
54
54
55
55
/* init $f8 and $f9 to zero */
56
- SUB s1 , s1 , s1
57
- SUB s2 , s2 , s2
56
+ vxor.v $vr8 , $vr8 , $vr8
57
+ vxor.v $vr9 , $vr9 , $vr9
58
58
slli.d INCX, INCX, BASE_SHIFT
59
59
li.d TEMP, SIZE
60
60
slli.d INCY, INCY, BASE_SHIFT
@@ -64,20 +64,6 @@ PROLOGUE
64
64
65
65
/* !((inc_x == 1) && (inc_y == 1)) */
66
66
67
- /* init $vr8 and $vr9 to zero */
68
- #ifdef DOUBLE
69
- vldrepl.d $vr0, X, 0
70
- #else
71
- vldrepl.w $vr0, X, 0
72
- #endif
73
- #ifdef DSDOT
74
- vfcvtl.d.s $vr0, $vr0
75
- vfsub.d $vr8, $vr0, $vr0
76
- vfsub.d $vr9, $vr0, $vr0
77
- #else
78
- VFSUB $vr8, $vr0, $vr0
79
- VFSUB $vr9, $vr0, $vr0
80
- #endif
81
67
82
68
#ifdef DOUBLE
83
69
srai.d I, N, 3
@@ -99,31 +85,31 @@ PROLOGUE
99
85
addi.w I, I, -1
100
86
addi.d X, X, 64
101
87
addi.d Y, Y, 64
102
- #ifdef DSDOT
88
+ #ifndef DOUBLE
103
89
vfcvtl.d.s $vr10, $vr0
104
90
vfcvtl.d.s $vr11, $vr4
105
91
vfcvth.d.s $vr12, $vr0
106
92
vfcvth.d.s $vr13, $vr4
107
- vfmadd.d $vr8, $vr10, $vr12 , $vr8
108
- vfmadd.d $vr9, $vr11 , $vr13, $vr9
93
+ vfmadd.d $vr8, $vr10, $vr11 , $vr8
94
+ vfmadd.d $vr9, $vr12 , $vr13, $vr9
109
95
vfcvtl.d.s $vr10, $vr1
110
96
vfcvtl.d.s $vr11, $vr5
111
97
vfcvth.d.s $vr12, $vr1
112
98
vfcvth.d.s $vr13, $vr5
113
- vfmadd.d $vr8, $vr10, $vr12 , $vr8
114
- vfmadd.d $vr9, $vr11 , $vr13, $vr9
99
+ vfmadd.d $vr8, $vr10, $vr11 , $vr8
100
+ vfmadd.d $vr9, $vr12 , $vr13, $vr9
115
101
vfcvtl.d.s $vr10, $vr2
116
102
vfcvtl.d.s $vr11, $vr6
117
103
vfcvth.d.s $vr12, $vr2
118
104
vfcvth.d.s $vr13, $vr6
119
- vfmadd.d $vr8, $vr10, $vr12 , $vr8
120
- vfmadd.d $vr9, $vr11 , $vr13, $vr9
105
+ vfmadd.d $vr8, $vr10, $vr11 , $vr8
106
+ vfmadd.d $vr9, $vr12 , $vr13, $vr9
121
107
vfcvtl.d.s $vr10, $vr3
122
108
vfcvtl.d.s $vr11, $vr7
123
109
vfcvth.d.s $vr12, $vr3
124
110
vfcvth.d.s $vr13, $vr7
125
- vfmadd.d $vr8, $vr10, $vr12 , $vr8
126
- vfmadd.d $vr9, $vr11 , $vr13, $vr9
111
+ vfmadd.d $vr8, $vr10, $vr11 , $vr8
112
+ vfmadd.d $vr9, $vr12 , $vr13, $vr9
127
113
#else
128
114
VFMADD $vr8, $vr0, $vr4, $vr8
129
115
VFMADD $vr9, $vr1, $vr5, $vr9
@@ -149,37 +135,24 @@ PROLOGUE
149
135
addi.w I, I, -1
150
136
addi.d X, X, 16
151
137
addi.d Y, Y, 16
152
- #ifdef DSDOT
138
+ #ifndef DOUBLE
153
139
vfcvtl.d.s $vr10, $vr0
154
140
vfcvtl.d.s $vr11, $vr4
155
141
vfcvth.d.s $vr12, $vr0
156
142
vfcvth.d.s $vr13, $vr4
157
- vfmadd.d $vr8, $vr10, $vr12 , $vr8
158
- vfmadd.d $vr9, $vr11 , $vr13, $vr9
143
+ vfmadd.d $vr8, $vr10, $vr11 , $vr8
144
+ vfmadd.d $vr9, $vr12 , $vr13, $vr9
159
145
#else
160
146
VFMADD $vr8, $vr0, $vr4, $vr8
161
147
#endif
162
148
bnez I, .L13
163
149
.align 3
164
150
.L14:
165
151
/* store dot in s1 $f8 */
166
- #ifdef DSDOT
167
152
vfadd.d $vr8, $vr8, $vr9
168
- fsub .s s2, s2, s2 /* set s2 to 0.0 */
153
+ fsub .d s2, s2, s2 /* set s2 to 0.0 */
169
154
vpackod.d $vr0, $vr8, $vr8
170
155
vfadd.d $vr8, $vr8, $vr0
171
- #else
172
- VFADD $vr8, $vr8, $vr9
173
- SUB s2, s2, s2 /* set s2 to 0.0 */
174
- vpackod.d $vr0, $vr8, $vr8
175
- #ifdef DOUBLE
176
- VFADD $vr8, $vr8, $vr0
177
- #else
178
- VFADD $vr8, $vr8, $vr0
179
- vpackod.w $vr0, $vr8, $vr8
180
- VFADD $vr8, $vr8, $vr0
181
- #endif /* defined DOUBLE */
182
- #endif /* defined DSDOT */
183
156
.align 3
184
157
.L15:
185
158
#ifdef DOUBLE
@@ -193,7 +166,7 @@ PROLOGUE
193
166
/* DOUBLE: 1 ; FLOAT: 1~3 */
194
167
LD a1, X, 0
195
168
LD b1, Y, 0
196
- #ifdef DSDOT
169
+ #ifndef DOUBLE
197
170
fcvt.d.s a1, a1
198
171
fcvt.d.s b1, b1
199
172
fmadd.d s1, b1, a1, s1
@@ -236,7 +209,7 @@ PROLOGUE
236
209
add .d X, X, INCX
237
210
LD b1, Y, 0 * SIZE
238
211
add .d Y, Y, INCY
239
- #ifdef DSDOT
212
+ #ifndef DOUBLE
240
213
fcvt.d.s a1, a1
241
214
fcvt.d.s b1, b1
242
215
fmadd.d s1, b1, a1, s1
@@ -248,7 +221,7 @@ PROLOGUE
248
221
add .d X, X, INCX
249
222
LD b1, Y, 0 * SIZE
250
223
add .d Y, Y, INCY
251
- #ifdef DSDOT
224
+ #ifndef DOUBLE
252
225
fcvt.d.s a1, a1
253
226
fcvt.d.s b1, b1
254
227
fmadd.d s2, b1, a1, s2
@@ -260,7 +233,7 @@ PROLOGUE
260
233
add .d X, X, INCX
261
234
LD b1, Y, 0 * SIZE
262
235
add .d Y, Y, INCY
263
- #ifdef DSDOT
236
+ #ifndef DOUBLE
264
237
fcvt.d.s a1, a1
265
238
fcvt.d.s b1, b1
266
239
fmadd.d s1, b1, a1, s1
@@ -272,7 +245,7 @@ PROLOGUE
272
245
add .d X, X, INCX
273
246
LD b1, Y, 0 * SIZE
274
247
add .d Y, Y, INCY
275
- #ifdef DSDOT
248
+ #ifndef DOUBLE
276
249
fcvt.d.s a1, a1
277
250
fcvt.d.s b1, b1
278
251
fmadd.d s2, b1, a1, s2
@@ -284,7 +257,7 @@ PROLOGUE
284
257
add .d X, X, INCX
285
258
LD b1, Y, 0 * SIZE
286
259
add .d Y, Y, INCY
287
- #ifdef DSDOT
260
+ #ifndef DOUBLE
288
261
fcvt.d.s a1, a1
289
262
fcvt.d.s b1, b1
290
263
fmadd.d s1, b1, a1, s1
@@ -296,7 +269,7 @@ PROLOGUE
296
269
add .d X, X, INCX
297
270
LD b1, Y, 0 * SIZE
298
271
add .d Y, Y, INCY
299
- #ifdef DSDOT
272
+ #ifndef DOUBLE
300
273
fcvt.d.s a1, a1
301
274
fcvt.d.s b1, b1
302
275
fmadd.d s2, b1, a1, s2
@@ -308,7 +281,7 @@ PROLOGUE
308
281
add .d X, X, INCX
309
282
LD b1, Y, 0 * SIZE
310
283
add .d Y, Y, INCY
311
- #ifdef DSDOT
284
+ #ifndef DOUBLE
312
285
fcvt.d.s a1, a1
313
286
fcvt.d.s b1, b1
314
287
fmadd.d s1, b1, a1, s1
@@ -321,7 +294,7 @@ PROLOGUE
321
294
LD b1, Y, 0 * SIZE
322
295
add .d Y, Y, INCY
323
296
addi.d I, I, -1
324
- #ifdef DSDOT
297
+ #ifndef DOUBLE
325
298
fcvt.d.s a1, a1
326
299
fcvt.d.s b1, b1
327
300
fmadd.d s2, b1, a1, s2
@@ -342,7 +315,7 @@ PROLOGUE
342
315
LD b1, Y, 0 * SIZE
343
316
add .d Y, Y, INCY
344
317
addi.d I, I, -1
345
- #ifdef DSDOT
318
+ #ifndef DOUBLE
346
319
fcvt.d.s a1, a1
347
320
fcvt.d.s b1, b1
348
321
fmadd.d s1, b1, a1, s1
@@ -353,12 +326,13 @@ PROLOGUE
353
326
.align 3
354
327
355
328
.L999:
356
- #ifdef DSDOT
357
329
fadd .d $f0, s1, s2
330
+ move $r4, $r17
331
+ #if defined(DOUBLE)
332
+ #elif defined(DSDOT)
358
333
#else
359
- ADD $f0, s1, s2
334
+ fcvt.s.d $f0, $f0
360
335
#endif
361
- move $r4, $r17
362
336
jirl $r0, $r1, 0x0
363
337
364
338
EPILOGUE
0 commit comments