@@ -43,8 +43,55 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4343#define VFNMSACVF_FLOAT RISCV_RVV(vfnmsac_vf_f64m4)
4444#endif
4545
46+ #if !defined(DOUBLE )
47+ inline int small_caxpy_kernel (BLASLONG n , BLASLONG dummy0 , BLASLONG dummy1 , FLOAT da_r , FLOAT da_i , FLOAT * x , BLASLONG inc_x , FLOAT * y , BLASLONG inc_y , FLOAT * dummy , BLASLONG dummy2 )
48+ #else
49+ inline int small_zaxpy_kernel (BLASLONG n , BLASLONG dummy0 , BLASLONG dummy1 , FLOAT da_r , FLOAT da_i , FLOAT * x , BLASLONG inc_x , FLOAT * y , BLASLONG inc_y , FLOAT * dummy , BLASLONG dummy2 )
50+ #endif
51+ {
52+ BLASLONG i = 0 ;
53+ BLASLONG ix ,iy ;
54+ BLASLONG inc_x2 ;
55+ BLASLONG inc_y2 ;
56+
57+ if ( n <= 0 ) return (0 );
58+ if ( da_r == 0.0 && da_i == 0.0 ) return (0 );
59+
60+ ix = 0 ;
61+ iy = 0 ;
62+
63+ inc_x2 = 2 * inc_x ;
64+ inc_y2 = 2 * inc_y ;
65+
66+ while (i < n )
67+ {
68+ #if !defined(CONJ )
69+ y [iy ] += ( da_r * x [ix ] - da_i * x [ix + 1 ] ) ;
70+ y [iy + 1 ] += ( da_r * x [ix + 1 ] + da_i * x [ix ] ) ;
71+ #else
72+ y [iy ] += ( da_r * x [ix ] + da_i * x [ix + 1 ] ) ;
73+ y [iy + 1 ] -= ( da_r * x [ix + 1 ] - da_i * x [ix ] ) ;
74+ #endif
75+ ix += inc_x2 ;
76+ iy += inc_y2 ;
77+ i ++ ;
78+
79+ }
80+ return (0 );
81+
82+ }
83+
4684int CNAME (BLASLONG n , BLASLONG dummy0 , BLASLONG dummy1 , FLOAT da_r , FLOAT da_i , FLOAT * x , BLASLONG inc_x , FLOAT * y , BLASLONG inc_y , FLOAT * dummy , BLASLONG dummy2 )
4785{
86+ #if !defined(DOUBLE )
87+ if (n < 16 ) {
88+ return small_caxpy_kernel (n , dummy0 , dummy1 , da_r , da_i , x , inc_x , y , inc_y , dummy , dummy2 );
89+ }
90+ #else
91+ if (n < 8 ) {
92+ return small_zaxpy_kernel (n , dummy0 , dummy1 , da_r , da_i , x , inc_x , y , inc_y , dummy , dummy2 );
93+ }
94+ #endif
4895 BLASLONG i = 0 , j = 0 ;
4996 BLASLONG ix = 0 ,iy = 0 ;
5097 if (n <= 0 ) return (0 );
0 commit comments