@@ -39,9 +39,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
39
#define VFMACCVV_FLOAT vfmacc_vv_f32m8
40
40
#define VFMVVF_FLOAT vfmv_v_f_f32m8
41
41
#define VFMVVF_FLOAT_M1 vfmv_v_f_f32m1
42
- #define VFREDMAXVS_FLOAT vfredmax_vs_f32m8_f32m1
43
42
#define VFMVFS_FLOAT_M1 vfmv_f_s_f32m1_f32
44
- #define VFABSV_FLOAT vfabs_v_f32m8
45
43
#define ABS fabsf
46
44
#else
47
45
#define VSETVL (n ) vsetvl_e64m8(n)
@@ -54,9 +52,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54
52
#define VFMACCVV_FLOAT vfmacc_vv_f64m8
55
53
#define VFMVVF_FLOAT vfmv_v_f_f64m8
56
54
#define VFMVVF_FLOAT_M1 vfmv_v_f_f64m1
57
- #define VFREDMAXVS_FLOAT vfredmax_vs_f64m8_f64m1
58
55
#define VFMVFS_FLOAT_M1 vfmv_f_s_f64m1_f64
59
- #define VFABSV_FLOAT vfabs_v_f64m8
60
56
#define ABS fabs
61
57
#endif
62
58
@@ -68,12 +64,11 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
68
64
if (n == 1 ) return (ABS (x [0 ]));
69
65
70
66
FLOAT_V_T vr , v0 ;
71
- FLOAT_V_T_M1 v_max , v_res ;
72
- FLOAT scale = 0.0 , ssq = 0.0 ;
67
+ FLOAT_V_T_M1 v_res ;
68
+ FLOAT ssq = 0.0 ;
73
69
74
70
size_t vlmax = VSETVL_MAX ;
75
71
v_res = VFMVVF_FLOAT_M1 (0 , vlmax );
76
- v_max = VFMVVF_FLOAT_M1 (0 , vlmax );
77
72
78
73
vr = VFMVVF_FLOAT (0 , vlmax );
79
74
@@ -83,9 +78,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
83
78
vl = VSETVL (n );
84
79
85
80
v0 = VLEV_FLOAT (x , vl );
86
- v0 = VFABSV_FLOAT (v0 , vl );
87
-
88
- v_max = VFREDMAXVS_FLOAT (v_max , v0 , v_max , vl );
89
81
90
82
vr = VFMACCVV_FLOAT (vr , v0 , v0 , vl );
91
83
}
@@ -98,20 +90,14 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
98
90
vl = VSETVL (n );
99
91
100
92
v0 = VLSEV_FLOAT (x , stride_x , vl );
101
- v0 = VFABSV_FLOAT (v0 , vl );
102
-
103
- v_max = VFREDMAXVS_FLOAT (v_max , v0 , v_max , vl );
104
93
105
94
vr = VFMACCVV_FLOAT (vr , v0 , v0 , vl );
106
95
}
107
-
108
96
}
109
97
110
98
v_res = VFREDSUM_FLOAT (v_res , vr , v_res , vlmax );
111
99
112
100
ssq = VFMVFS_FLOAT_M1 (v_res );
113
- scale = VFMVFS_FLOAT_M1 (v_max );
114
- ssq = ssq / (scale * scale );
115
101
116
- return ( scale * sqrt (ssq ) );
102
+ return sqrt (ssq );
117
103
}
0 commit comments