Skip to content

Commit eddfe1e

Browse files
authored
Merge pull request #5408 from ChipKerchner/fixRISCV64GEMVInitializationAndWarnings
Fix bad vector zero initializer and other compiler warnings for RISC-V.
2 parents 9a64b32 + 72f082f commit eddfe1e

File tree

7 files changed

+14
-18
lines changed

7 files changed

+14
-18
lines changed

kernel/riscv64/gemv_n_vector.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3535
#define VSSEV_FLOAT RISCV_RVV(vsse32_v_f32m8)
3636
#define VFMACCVF_FLOAT RISCV_RVV(vfmacc_vf_f32m8)
3737
#define VFMUL_VF_FLOAT RISCV_RVV(vfmul_vf_f32m8)
38-
#define VFILL_ZERO_FLOAT RISCV_RVV(vfsub_vv_f32m8)
38+
#define VREINTERPRET_FLOAT RISCV_RVV(vreinterpret_v_i32m8_f32m8)
39+
#define VFILL_INT RISCV_RVV(vmv_v_x_i32m8)
3940
#else
4041
#define VSETVL(n) RISCV_RVV(vsetvl_e64m4)(n)
4142
#define FLOAT_V_T vfloat64m4_t
@@ -45,7 +46,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4546
#define VSSEV_FLOAT RISCV_RVV(vsse64_v_f64m4)
4647
#define VFMACCVF_FLOAT RISCV_RVV(vfmacc_vf_f64m4)
4748
#define VFMUL_VF_FLOAT RISCV_RVV(vfmul_vf_f64m4)
48-
#define VFILL_ZERO_FLOAT RISCV_RVV(vfsub_vv_f64m4)
49+
#define VREINTERPRET_FLOAT RISCV_RVV(vreinterpret_v_i64m4_f64m4)
50+
#define VFILL_INT RISCV_RVV(vmv_v_x_i64m4)
4951
#endif
5052

5153
int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y, FLOAT *buffer)
@@ -56,7 +58,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO
5658
if(n < 0) return(0);
5759
FLOAT *a_ptr = a;
5860
FLOAT temp[4];
59-
FLOAT_V_T va0, va1, vy0, vy1,vy0_temp, vy1_temp , temp_v ,va0_0 , va0_1 , va1_0 ,va1_1 ,va2_0 ,va2_1 ,va3_0 ,va3_1 ;
61+
FLOAT_V_T va0, va1, vy0, vy1,vy0_temp, vy1_temp ,va0_0 , va0_1 , va1_0 ,va1_1 ,va2_0 ,va2_1 ,va3_0 ,va3_1 ;
6062
unsigned int gvl = 0;
6163
if(inc_y == 1 && inc_x == 1){
6264
gvl = VSETVL(m);
@@ -66,8 +68,8 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO
6668
ix = 0;
6769
vy0_temp = VLEV_FLOAT(&y[j], gvl);
6870
vy1_temp = VLEV_FLOAT(&y[j+gvl], gvl);
69-
vy0 = VFILL_ZERO_FLOAT(vy0 , vy0 , gvl);
70-
vy1 = VFILL_ZERO_FLOAT(vy1 , vy1 , gvl);
71+
vy0 = VREINTERPRET_FLOAT(VFILL_INT(0, gvl));
72+
vy1 = VREINTERPRET_FLOAT(VFILL_INT(0, gvl));
7173
int i;
7274

7375
int remainder = n % 4;
@@ -118,7 +120,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO
118120
a_ptr = a;
119121
ix = 0;
120122
vy0_temp = VLEV_FLOAT(&y[j], gvl);
121-
vy0 = VFILL_ZERO_FLOAT(vy0 , vy0 , gvl);
123+
vy0 = VREINTERPRET_FLOAT(VFILL_INT(0, gvl));
122124
int i;
123125

124126
int remainder = n % 4;
@@ -251,4 +253,4 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO
251253
}
252254
}
253255
return(0);
254-
}
256+
}

kernel/riscv64/omatcopy_cn_vector.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ int CNAME(BLASLONG rows, BLASLONG cols, FLOAT alpha, FLOAT *a, BLASLONG lda, FLO
5151
FLOAT *aptr,*bptr;
5252
size_t vl;
5353

54-
FLOAT_V_T va, vb,va1,vb1;
54+
FLOAT_V_T va,va1;
5555
if ( rows <= 0 ) return(0);
5656
if ( cols <= 0 ) return(0);
5757

kernel/riscv64/zamax_vector.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
8181
FLOAT_V_T_M1 v_res;
8282
v_res = VFMVVF_FLOAT_M1(0, 1);
8383

84-
MASK_T mask0, mask1;
8584
BLASLONG stride_x = inc_x * sizeof(FLOAT) * 2;
8685
gvl = VSETVL(n);
8786
v_max = VFMVVF_FLOAT(0, gvl);

kernel/riscv64/zamin_vector.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
8383
FLOAT_V_T_M1 v_res;
8484
v_res = VFMVVF_FLOAT_M1(FLT_MAX, 1);
8585

86-
MASK_T mask0, mask1;
8786
BLASLONG stride_x = inc_x * sizeof(FLOAT) * 2;
8887
gvl = VSETVL(n);
8988
v_min = VFMVVF_FLOAT(FLT_MAX, gvl);

kernel/riscv64/zasum_vector.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,13 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
7676
FLOAT asumf=0.0;
7777
if (n <= 0 || inc_x <= 0) return(asumf);
7878
unsigned int gvl = 0;
79-
FLOAT_V_T v0, v1, v_zero,v_sum;
79+
FLOAT_V_T v0, v1,v_sum;
8080
FLOAT_V_T_M1 v_res;
8181
v_res = VFMVVF_FLOAT_M1(0, 1);
8282

8383
if(inc_x == 1){
8484
BLASLONG n2 = n * 2;
8585
gvl = VSETVL(n2);
86-
v_zero = VFMVVF_FLOAT(0, gvl);
8786
if(gvl <= n2/2){
8887
v_sum = VFMVVF_FLOAT(0, gvl);
8988
for(i=0,j=0; i<n2/(gvl*2); i++){
@@ -108,7 +107,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
108107
}else{
109108
gvl = VSETVL(n);
110109
unsigned int stride_x = inc_x * sizeof(FLOAT) * 2;
111-
v_zero = VFMVVF_FLOAT(0, gvl);
112110

113111
BLASLONG inc_xv = inc_x * 2 * gvl;
114112
v_sum = VFMVVF_FLOAT(0, gvl);

kernel/riscv64/zgemv_n_vector.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha_r, FLOAT alpha_i,
5555
BLASLONG i = 0, j = 0, k = 0;
5656
BLASLONG ix = 0, iy = 0;
5757
FLOAT *a_ptr = a;
58-
FLOAT temp_r = 0.0, temp_i = 0.0, temp_r1, temp_i1, temp_r2, temp_i2, temp_r3, temp_i3, temp_rr[4], temp_ii[4];
59-
FLOAT_V_T va0, va1, vy0, vy1, vy0_new, vy1_new, va2, va3, va4, va5, va6, va7, temp_iv, temp_rv, x_v0, x_v1, temp_v1, temp_v2, temp_v3, temp_v4;
58+
FLOAT temp_r = 0.0, temp_i = 0.0, temp_rr[4], temp_ii[4];
59+
FLOAT_V_T va0, va1, vy0, vy1, vy0_new, vy1_new, va2, va3, va4, va5, va6, va7, temp_iv, temp_rv, x_v0, x_v1;
6060
unsigned int gvl = 0;
6161
BLASLONG stride_a = sizeof(FLOAT) * 2;
6262
BLASLONG stride_y = inc_y * sizeof(FLOAT) * 2;

kernel/riscv64/zsum_vector.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,13 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
7171
FLOAT asumf=0.0;
7272
if (n <= 0 || inc_x <= 0) return(asumf);
7373
unsigned int gvl = 0;
74-
FLOAT_V_T v0, v1, v_zero,v_sum;
74+
FLOAT_V_T v0, v1,v_sum;
7575
FLOAT_V_T_M1 v_res;
7676
v_res = VFMVVF_FLOAT_M1(0, 1);
7777

7878
if(inc_x == 1){
7979
BLASLONG n2 = n * 2;
8080
gvl = VSETVL(n2);
81-
v_zero = VFMVVF_FLOAT(0, gvl);
8281
if(gvl <= n2/2){
8382
v_sum = VFMVVF_FLOAT(0, gvl);
8483
for(i=0,j=0; i<n2/(gvl*2); i++){
@@ -100,7 +99,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x)
10099
}else{
101100
gvl = VSETVL(n);
102101
unsigned int stride_x = inc_x * sizeof(FLOAT) * 2;
103-
v_zero = VFMVVF_FLOAT(0, gvl);
104102

105103
BLASLONG inc_xv = inc_x * 2 * gvl;
106104
v_sum = VFMVVF_FLOAT(0, gvl);

0 commit comments

Comments
 (0)