Skip to content

Commit 889c5d0

Browse files
authored
Merge pull request #4456 from kseniyazaytseva/riscv-rvv10
Fix BLAS and LAPACK tests for RVV 1.0 target, update to 0.12.0 intrincics
2 parents 4e2a32f + b193ea3 commit 889c5d0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1628
-709
lines changed

kernel/riscv64/axpby_rvv.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ int CNAME(BLASLONG n, FLOAT alpha, FLOAT *x, BLASLONG inc_x, FLOAT beta, FLOAT *
5353
{
5454
FLOAT_V_T vx, vy;
5555

56-
if ( n < 0 ) return(0);
56+
if ( n <= 0 ) return(0);
5757

5858
if ( beta == 0.0 ) {
5959
if ( alpha == 0.0 ) {
@@ -63,7 +63,7 @@ int CNAME(BLASLONG n, FLOAT alpha, FLOAT *x, BLASLONG inc_x, FLOAT beta, FLOAT *
6363
BLASLONG stride_y = inc_y * sizeof(FLOAT);
6464
size_t vl = VSETVL(n);
6565
vy = VFMVVF_FLOAT(0.0, vl);
66-
for ( ; n > 0; n -= vl, y += vl*stride_y) {
66+
for ( ; n > 0; n -= vl, y += vl*inc_y) {
6767
vl = VSETVL(n);
6868
VSSEV_FLOAT(y, stride_y, vy, vl);
6969
}
@@ -126,10 +126,12 @@ int CNAME(BLASLONG n, FLOAT alpha, FLOAT *x, BLASLONG inc_x, FLOAT beta, FLOAT *
126126

127127
} else {
128128
if ((1 == inc_x) && (1 == inc_y)) {
129-
for (size_t vl; n > 0; n -= vl, y += vl) {
129+
for (size_t vl; n > 0; n -= vl, x += vl, y += vl) {
130130
vl = VSETVL(n);
131+
vx = VLEV_FLOAT(x, vl);
131132
vy = VLEV_FLOAT(y, vl);
132133
vy = VFMULVF_FLOAT(vy, beta, vl);
134+
vy = VFMACCVF_FLOAT(vy, alpha, vx, vl);
133135
VSEV_FLOAT (y, vy, vl);
134136
}
135137
} else if (1 == inc_x) {

kernel/riscv64/copy_rvv.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4545

4646
int CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y)
4747
{
48-
if(n < 0) return(0);
48+
if(n <= 0) return(0);
4949

5050
FLOAT_V_T v0;
5151

kernel/riscv64/gemm_ncopy_8_rvv.c

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,31 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3030
#if !defined(DOUBLE)
3131
#define VSETVL(n) __riscv_vsetvl_e32m1(n)
3232
#define FLOAT_V_T vfloat32m1_t
33+
#define FLOAT_VX2_T vfloat32m1x2_t
34+
#define FLOAT_VX4_T vfloat32m1x4_t
35+
#define FLOAT_VX8_T vfloat32m1x8_t
36+
#define VSET_VX2 __riscv_vset_v_f32m1_f32m1x2
37+
#define VSET_VX4 __riscv_vset_v_f32m1_f32m1x4
38+
#define VSET_VX8 __riscv_vset_v_f32m1_f32m1x8
3339
#define VLEV_FLOAT __riscv_vle32_v_f32m1
3440
#define VSEV_FLOAT __riscv_vse32_v_f32m1
35-
#define VSSEG2_FLOAT __riscv_vsseg2e32_v_f32m1
36-
#define VSSEG4_FLOAT __riscv_vsseg4e32_v_f32m1
37-
#define VSSEG8_FLOAT __riscv_vsseg8e32_v_f32m1
41+
#define VSSEG2_FLOAT __riscv_vsseg2e32_v_f32m1x2
42+
#define VSSEG4_FLOAT __riscv_vsseg4e32_v_f32m1x4
43+
#define VSSEG8_FLOAT __riscv_vsseg8e32_v_f32m1x8
3844
#else
3945
#define VSETVL(n) __riscv_vsetvl_e64m1(n)
4046
#define FLOAT_V_T vfloat64m1_t
47+
#define FLOAT_VX2_T vfloat64m1x2_t
48+
#define FLOAT_VX4_T vfloat64m1x4_t
49+
#define FLOAT_VX8_T vfloat64m1x8_t
50+
#define VSET_VX2 __riscv_vset_v_f64m1_f64m1x2
51+
#define VSET_VX4 __riscv_vset_v_f64m1_f64m1x4
52+
#define VSET_VX8 __riscv_vset_v_f64m1_f64m1x8
4153
#define VLEV_FLOAT __riscv_vle64_v_f64m1
4254
#define VSEV_FLOAT __riscv_vse64_v_f64m1
43-
#define VSSEG2_FLOAT __riscv_vsseg2e64_v_f64m1
44-
#define VSSEG4_FLOAT __riscv_vsseg4e64_v_f64m1
45-
#define VSSEG8_FLOAT __riscv_vsseg8e64_v_f64m1
55+
#define VSSEG2_FLOAT __riscv_vsseg2e64_v_f64m1x2
56+
#define VSSEG4_FLOAT __riscv_vsseg4e64_v_f64m1x4
57+
#define VSSEG8_FLOAT __riscv_vsseg8e64_v_f64m1x8
4658
#endif
4759

4860
// Optimizes the implementation in ../generic/gemm_ncopy_8.c
@@ -57,6 +69,10 @@ int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, FLOAT *b)
5769
FLOAT *b_offset;
5870

5971
FLOAT_V_T v1, v2, v3, v4, v5, v6, v7, v8;
72+
FLOAT_VX2_T vx2;
73+
FLOAT_VX4_T vx4;
74+
FLOAT_VX8_T vx8;
75+
6076
size_t vl;
6177

6278
//fprintf(stderr, "gemm_ncopy_8 m=%ld n=%ld lda=%ld\n", m, n, lda);
@@ -87,7 +103,16 @@ int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, FLOAT *b)
87103
v7 = VLEV_FLOAT(a_offset7, vl);
88104
v8 = VLEV_FLOAT(a_offset8, vl);
89105

90-
VSSEG8_FLOAT(b_offset, v1, v2, v3, v4, v5, v6, v7, v8, vl);
106+
vx8 = VSET_VX8(vx8, 0, v1);
107+
vx8 = VSET_VX8(vx8, 1, v2);
108+
vx8 = VSET_VX8(vx8, 2, v3);
109+
vx8 = VSET_VX8(vx8, 3, v4);
110+
vx8 = VSET_VX8(vx8, 4, v5);
111+
vx8 = VSET_VX8(vx8, 5, v6);
112+
vx8 = VSET_VX8(vx8, 6, v7);
113+
vx8 = VSET_VX8(vx8, 7, v8);
114+
115+
VSSEG8_FLOAT(b_offset, vx8, vl);
91116

92117
a_offset1 += vl;
93118
a_offset2 += vl;
@@ -116,7 +141,12 @@ int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, FLOAT *b)
116141
v3 = VLEV_FLOAT(a_offset3, vl);
117142
v4 = VLEV_FLOAT(a_offset4, vl);
118143

119-
VSSEG4_FLOAT(b_offset, v1, v2, v3, v4, vl);
144+
vx4 = VSET_VX4(vx4, 0, v1);
145+
vx4 = VSET_VX4(vx4, 1, v2);
146+
vx4 = VSET_VX4(vx4, 2, v3);
147+
vx4 = VSET_VX4(vx4, 3, v4);
148+
149+
VSSEG4_FLOAT(b_offset, vx4, vl);
120150

121151
a_offset1 += vl;
122152
a_offset2 += vl;
@@ -137,7 +167,10 @@ int CNAME(BLASLONG m, BLASLONG n, FLOAT *a, BLASLONG lda, FLOAT *b)
137167
v1 = VLEV_FLOAT(a_offset1, vl);
138168
v2 = VLEV_FLOAT(a_offset2, vl);
139169

140-
VSSEG2_FLOAT(b_offset, v1, v2, vl);
170+
vx2 = VSET_VX2(vx2, 0, v1);
171+
vx2 = VSET_VX2(vx2, 1, v2);
172+
173+
VSSEG2_FLOAT(b_offset, vx2, vl);
141174

142175
a_offset1 += vl;
143176
a_offset2 += vl;

kernel/riscv64/gemm_tcopy_8_rvv.c

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,33 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3030
#if !defined(DOUBLE)
3131
#define VSETVL(n) __riscv_vsetvl_e32m1(n)
3232
#define FLOAT_V_T vfloat32m1_t
33+
#define FLOAT_VX2_T vfloat32m1x2_t
34+
#define FLOAT_VX4_T vfloat32m1x4_t
35+
#define FLOAT_VX8_T vfloat32m1x8_t
3336
#define VLEV_FLOAT __riscv_vle32_v_f32m1
3437
#define VLSEV_FLOAT __riscv_vlse32_v_f32m1
3538
#define VSEV_FLOAT __riscv_vse32_v_f32m1
36-
#define VLSSEG2_FLOAT __riscv_vlsseg2e32_v_f32m1
37-
#define VSSEG2_FLOAT __riscv_vsseg2e32_v_f32m1
38-
#define VLSSEG4_FLOAT __riscv_vlsseg4e32_v_f32m1
39-
#define VSSEG4_FLOAT __riscv_vsseg4e32_v_f32m1
40-
#define VLSSEG8_FLOAT __riscv_vlsseg8e32_v_f32m1
41-
#define VSSEG8_FLOAT __riscv_vsseg8e32_v_f32m1
39+
#define VLSSEG2_FLOAT __riscv_vlsseg2e32_v_f32m1x2
40+
#define VSSEG2_FLOAT __riscv_vsseg2e32_v_f32m1x2
41+
#define VLSSEG4_FLOAT __riscv_vlsseg4e32_v_f32m1x4
42+
#define VSSEG4_FLOAT __riscv_vsseg4e32_v_f32m1x4
43+
#define VLSSEG8_FLOAT __riscv_vlsseg8e32_v_f32m1x8
44+
#define VSSEG8_FLOAT __riscv_vsseg8e32_v_f32m1x8
4245
#else
4346
#define VSETVL(n) __riscv_vsetvl_e64m1(n)
4447
#define FLOAT_V_T vfloat64m1_t
48+
#define FLOAT_VX2_T vfloat64m1x2_t
49+
#define FLOAT_VX4_T vfloat64m1x4_t
50+
#define FLOAT_VX8_T vfloat64m1x8_t
4551
#define VLEV_FLOAT __riscv_vle64_v_f64m1
4652
#define VLSEV_FLOAT __riscv_vlse64_v_f64m1
4753
#define VSEV_FLOAT __riscv_vse64_v_f64m1
48-
#define VLSSEG2_FLOAT __riscv_vlsseg2e64_v_f64m1
49-
#define VSSEG2_FLOAT __riscv_vsseg2e64_v_f64m1
50-
#define VLSSEG4_FLOAT __riscv_vlsseg4e64_v_f64m1
51-
#define VSSEG4_FLOAT __riscv_vsseg4e64_v_f64m1
52-
#define VLSSEG8_FLOAT __riscv_vlsseg8e64_v_f64m1
53-
#define VSSEG8_FLOAT __riscv_vsseg8e64_v_f64m1
54+
#define VLSSEG2_FLOAT __riscv_vlsseg2e64_v_f64m1x2
55+
#define VSSEG2_FLOAT __riscv_vsseg2e64_v_f64m1x2
56+
#define VLSSEG4_FLOAT __riscv_vlsseg4e64_v_f64m1x4
57+
#define VSSEG4_FLOAT __riscv_vsseg4e64_v_f64m1x4
58+
#define VLSSEG8_FLOAT __riscv_vlsseg8e64_v_f64m1x8
59+
#define VSSEG8_FLOAT __riscv_vsseg8e64_v_f64m1x8
5460
#endif
5561

5662
int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
@@ -62,7 +68,10 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
6268

6369
IFLOAT *boffset, *boffset1, *boffset2, *boffset3, *boffset4;
6470

65-
FLOAT_V_T v0, v1, v2, v3, v4, v5, v6, v7;
71+
FLOAT_V_T v0;
72+
FLOAT_VX2_T vx2;
73+
FLOAT_VX4_T vx4;
74+
FLOAT_VX8_T vx8;
6675

6776
// fprintf(stderr, "gemm_tcopy_8 m=%ld n=%ld lda=%ld\n", m, n, lda);
6877

@@ -83,8 +92,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
8392
for(i = (n >> 3); i > 0; i--) {
8493
size_t vl = 8;
8594

86-
VLSSEG8_FLOAT(&v0, &v1, &v2, &v3, &v4, &v5, &v6, &v7, aoffset1, lda * sizeof(FLOAT), vl);
87-
VSSEG8_FLOAT(boffset1, v0, v1, v2, v3, v4, v5, v6, v7, vl);
95+
vx8 = VLSSEG8_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
96+
VSSEG8_FLOAT(boffset1, vx8, vl);
8897

8998
aoffset1 += 8;
9099
boffset1 += m * 8;
@@ -93,8 +102,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
93102
if (n & 4) {
94103
size_t vl = 8;
95104

96-
VLSSEG4_FLOAT(&v0, &v1, &v2, &v3, aoffset1, lda * sizeof(FLOAT), vl);
97-
VSSEG4_FLOAT(boffset2, v0, v1, v2, v3, vl);
105+
vx4 = VLSSEG4_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
106+
VSSEG4_FLOAT(boffset2, vx4, vl);
98107

99108
aoffset1 += 4;
100109
boffset2 += 32;
@@ -103,8 +112,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
103112
if (n & 2) {
104113
size_t vl = 8;
105114

106-
VLSSEG2_FLOAT(&v0, &v1, aoffset1, lda * sizeof(FLOAT), vl);
107-
VSSEG2_FLOAT(boffset3, v0, v1, vl);
115+
vx2 = VLSSEG2_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
116+
VSSEG2_FLOAT(boffset3, vx2, vl);
108117

109118
aoffset1 += 2;
110119
boffset3 += 16;
@@ -133,8 +142,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
133142
for(i = (n >> 3); i > 0; i--) {
134143
size_t vl = 4;
135144

136-
VLSSEG8_FLOAT(&v0, &v1, &v2, &v3, &v4, &v5, &v6, &v7, aoffset1, lda * sizeof(FLOAT), vl);
137-
VSSEG8_FLOAT(boffset1, v0, v1, v2, v3, v4, v5, v6, v7, vl);
145+
vx8 = VLSSEG8_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
146+
VSSEG8_FLOAT(boffset1, vx8, vl);
138147

139148
aoffset1 += 8;
140149
boffset1 += m * 8;
@@ -143,8 +152,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
143152
if (n & 4) {
144153
size_t vl = 4;
145154

146-
VLSSEG4_FLOAT(&v0, &v1, &v2, &v3, aoffset1, lda * sizeof(FLOAT), vl);
147-
VSSEG4_FLOAT(boffset2, v0, v1, v2, v3, vl);
155+
vx4 = VLSSEG4_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
156+
VSSEG4_FLOAT(boffset2, vx4, vl);
148157

149158
aoffset1 += 4;
150159
boffset2 += 16;
@@ -153,8 +162,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
153162
if (n & 2) {
154163
size_t vl = 4;
155164

156-
VLSSEG2_FLOAT(&v0, &v1, aoffset1, lda * sizeof(FLOAT), vl);
157-
VSSEG2_FLOAT(boffset3, v0, v1, vl);
165+
vx2 = VLSSEG2_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
166+
VSSEG2_FLOAT(boffset3, vx2, vl);
158167

159168
aoffset1 += 2;
160169
boffset3 += 8;
@@ -181,8 +190,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
181190
for(i = (n >> 3); i > 0; i--) {
182191
size_t vl = 2;
183192

184-
VLSSEG8_FLOAT(&v0, &v1, &v2, &v3, &v4, &v5, &v6, &v7, aoffset1, lda * sizeof(FLOAT), vl);
185-
VSSEG8_FLOAT(boffset1, v0, v1, v2, v3, v4, v5, v6, v7, vl);
193+
vx8 = VLSSEG8_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
194+
VSSEG8_FLOAT(boffset1, vx8, vl);
186195

187196
aoffset1 += 8;
188197
boffset1 += m * 8;
@@ -191,8 +200,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
191200
if (n & 4) {
192201
size_t vl = 2;
193202

194-
VLSSEG4_FLOAT(&v0, &v1, &v2, &v3, aoffset1, lda * sizeof(FLOAT), vl);
195-
VSSEG4_FLOAT(boffset2, v0, v1, v2, v3, vl);
203+
vx4 = VLSSEG4_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
204+
VSSEG4_FLOAT(boffset2, vx4, vl);
196205

197206
aoffset1 += 4;
198207
boffset2 += 8;
@@ -201,8 +210,8 @@ int CNAME(BLASLONG m, BLASLONG n, IFLOAT *a, BLASLONG lda, IFLOAT *b)
201210
if (n & 2) {
202211
size_t vl = 2;
203212

204-
VLSSEG2_FLOAT(&v0, &v1, aoffset1, lda * sizeof(FLOAT), vl);
205-
VSSEG2_FLOAT(boffset3, v0, v1, vl);
213+
vx2 = VLSSEG2_FLOAT(aoffset1, lda * sizeof(FLOAT), vl);
214+
VSSEG2_FLOAT(boffset3, vx2, vl);
206215

207216
aoffset1 += 2;
208217
boffset3 += 4;

kernel/riscv64/izamax_rvv.c

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3232
#define VSETVL_MAX __riscv_vsetvlmax_e64m4()
3333
#define FLOAT_V_T vfloat64m4_t
3434
#define FLOAT_V_T_M1 vfloat64m1_t
35+
#define FLOAT_VX2_T vfloat64m4x2_t
36+
#define VGET_VX2 __riscv_vget_v_f64m4x2_f64m4
3537
#define VLEV_FLOAT __riscv_vle64_v_f64m4
3638
#define VLSEV_FLOAT __riscv_vlse64_v_f64m4
37-
#define VLSEG_FLOAT __riscv_vlseg2e64_v_f64m4
38-
#define VLSSEG_FLOAT __riscv_vlsseg2e64_v_f64m4
39+
#define VLSEG_FLOAT __riscv_vlseg2e64_v_f64m4x2
40+
#define VLSSEG_FLOAT __riscv_vlsseg2e64_v_f64m4x2
3941
#define VFREDMAXVS_FLOAT __riscv_vfredmax_vs_f64m4_f64m1
4042
#define MASK_T vbool16_t
4143
#define VMFLTVF_FLOAT __riscv_vmflt_vf_f64m4_b16
@@ -61,10 +63,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
6163
#define VSETVL_MAX __riscv_vsetvlmax_e32m4()
6264
#define FLOAT_V_T vfloat32m4_t
6365
#define FLOAT_V_T_M1 vfloat32m1_t
66+
#define FLOAT_VX2_T vfloat32m4x2_t
67+
#define VGET_VX2 __riscv_vget_v_f32m4x2_f32m4
6468
#define VLEV_FLOAT __riscv_vle32_v_f32m4
6569
#define VLSEV_FLOAT __riscv_vlse32_v_f32m4
66-
#define VLSEG_FLOAT __riscv_vlseg2e32_v_f32m4
67-
#define VLSSEG_FLOAT __riscv_vlsseg2e32_v_f32m4
70+
#define VLSEG_FLOAT __riscv_vlseg2e32_v_f32m4x2
71+
#define VLSSEG_FLOAT __riscv_vlsseg2e32_v_f32m4x2
6872
#define VFREDMAXVS_FLOAT __riscv_vfredmax_vs_f32m4_f32m1
6973
#define MASK_T vbool8_t
7074
#define VMFLTVF_FLOAT __riscv_vmflt_vf_f32m4_b8
@@ -93,6 +97,7 @@ BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
9397
if (n <= 0 || inc_x <= 0) return(max_index);
9498

9599
FLOAT_V_T vx0, vx1, v_max;
100+
FLOAT_VX2_T vxx2;
96101
UINT_V_T v_max_index;
97102
MASK_T mask;
98103

@@ -107,7 +112,10 @@ BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
107112
for (size_t vl; n > 0; n -= vl, x += vl*2, j += vl) {
108113
vl = VSETVL(n);
109114

110-
VLSEG_FLOAT(&vx0, &vx1, x, vl);
115+
vxx2 = VLSEG_FLOAT(x, vl);
116+
117+
vx0 = VGET_VX2(vxx2, 0);
118+
vx1 = VGET_VX2(vxx2, 1);
111119

112120
vx0 = VFABSV_FLOAT(vx0, vl);
113121
vx1 = VFABSV_FLOAT(vx1, vl);
@@ -129,7 +137,10 @@ BLASLONG CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
129137
for (size_t vl; n > 0; n -= vl, x += vl*inc_x*2, j += vl) {
130138
vl = VSETVL(n);
131139

132-
VLSSEG_FLOAT(&vx0, &vx1, x, stride_x, vl);
140+
vxx2 = VLSSEG_FLOAT(x, stride_x, vl);
141+
142+
vx0 = VGET_VX2(vxx2, 0);
143+
vx1 = VGET_VX2(vxx2, 1);
133144

134145
vx0 = VFABSV_FLOAT(vx0, vl);
135146
vx1 = VFABSV_FLOAT(vx1, vl);

0 commit comments

Comments
 (0)