@@ -26,18 +26,19 @@ static int rvv_has_vector(void)
26
26
static void raid6_rvv1_gen_syndrome_real (int disks , unsigned long bytes , void * * ptrs )
27
27
{
28
28
u8 * * dptr = (u8 * * )ptrs ;
29
- unsigned long d ;
30
- int z , z0 ;
31
29
u8 * p , * q ;
30
+ unsigned long vl , d ;
31
+ int z , z0 ;
32
32
33
33
z0 = disks - 3 ; /* Highest data disk */
34
34
p = dptr [z0 + 1 ]; /* XOR parity */
35
35
q = dptr [z0 + 2 ]; /* RS syndrome */
36
36
37
37
asm volatile (".option push\n"
38
38
".option arch,+v\n"
39
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
39
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
40
40
".option pop\n"
41
+ : "=&r" (vl )
41
42
);
42
43
43
44
/* v0:wp0, v1:wq0, v2:wd0/w20, v3:w10 */
@@ -99,7 +100,7 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,
99
100
{
100
101
u8 * * dptr = (u8 * * )ptrs ;
101
102
u8 * p , * q ;
102
- unsigned long d ;
103
+ unsigned long vl , d ;
103
104
int z , z0 ;
104
105
105
106
z0 = stop ; /* P/Q right side optimization */
@@ -108,8 +109,9 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,
108
109
109
110
asm volatile (".option push\n"
110
111
".option arch,+v\n"
111
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
112
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
112
113
".option pop\n"
114
+ : "=&r" (vl )
113
115
);
114
116
115
117
/* v0:wp0, v1:wq0, v2:wd0/w20, v3:w10 */
@@ -195,18 +197,19 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,
195
197
static void raid6_rvv2_gen_syndrome_real (int disks , unsigned long bytes , void * * ptrs )
196
198
{
197
199
u8 * * dptr = (u8 * * )ptrs ;
198
- unsigned long d ;
199
- int z , z0 ;
200
200
u8 * p , * q ;
201
+ unsigned long vl , d ;
202
+ int z , z0 ;
201
203
202
204
z0 = disks - 3 ; /* Highest data disk */
203
205
p = dptr [z0 + 1 ]; /* XOR parity */
204
206
q = dptr [z0 + 2 ]; /* RS syndrome */
205
207
206
208
asm volatile (".option push\n"
207
209
".option arch,+v\n"
208
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
210
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
209
211
".option pop\n"
212
+ : "=&r" (vl )
210
213
);
211
214
212
215
/*
@@ -287,7 +290,7 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,
287
290
{
288
291
u8 * * dptr = (u8 * * )ptrs ;
289
292
u8 * p , * q ;
290
- unsigned long d ;
293
+ unsigned long vl , d ;
291
294
int z , z0 ;
292
295
293
296
z0 = stop ; /* P/Q right side optimization */
@@ -296,8 +299,9 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,
296
299
297
300
asm volatile (".option push\n"
298
301
".option arch,+v\n"
299
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
302
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
300
303
".option pop\n"
304
+ : "=&r" (vl )
301
305
);
302
306
303
307
/*
@@ -413,18 +417,19 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,
413
417
static void raid6_rvv4_gen_syndrome_real (int disks , unsigned long bytes , void * * ptrs )
414
418
{
415
419
u8 * * dptr = (u8 * * )ptrs ;
416
- unsigned long d ;
417
- int z , z0 ;
418
420
u8 * p , * q ;
421
+ unsigned long vl , d ;
422
+ int z , z0 ;
419
423
420
424
z0 = disks - 3 ; /* Highest data disk */
421
425
p = dptr [z0 + 1 ]; /* XOR parity */
422
426
q = dptr [z0 + 2 ]; /* RS syndrome */
423
427
424
428
asm volatile (".option push\n"
425
429
".option arch,+v\n"
426
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
430
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
427
431
".option pop\n"
432
+ : "=&r" (vl )
428
433
);
429
434
430
435
/*
@@ -539,7 +544,7 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,
539
544
{
540
545
u8 * * dptr = (u8 * * )ptrs ;
541
546
u8 * p , * q ;
542
- unsigned long d ;
547
+ unsigned long vl , d ;
543
548
int z , z0 ;
544
549
545
550
z0 = stop ; /* P/Q right side optimization */
@@ -548,8 +553,9 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,
548
553
549
554
asm volatile (".option push\n"
550
555
".option arch,+v\n"
551
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
556
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
552
557
".option pop\n"
558
+ : "=&r" (vl )
553
559
);
554
560
555
561
/*
@@ -721,18 +727,19 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,
721
727
static void raid6_rvv8_gen_syndrome_real (int disks , unsigned long bytes , void * * ptrs )
722
728
{
723
729
u8 * * dptr = (u8 * * )ptrs ;
724
- unsigned long d ;
725
- int z , z0 ;
726
730
u8 * p , * q ;
731
+ unsigned long vl , d ;
732
+ int z , z0 ;
727
733
728
734
z0 = disks - 3 ; /* Highest data disk */
729
735
p = dptr [z0 + 1 ]; /* XOR parity */
730
736
q = dptr [z0 + 2 ]; /* RS syndrome */
731
737
732
738
asm volatile (".option push\n"
733
739
".option arch,+v\n"
734
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
740
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
735
741
".option pop\n"
742
+ : "=&r" (vl )
736
743
);
737
744
738
745
/*
@@ -915,7 +922,7 @@ static void raid6_rvv8_xor_syndrome_real(int disks, int start, int stop,
915
922
{
916
923
u8 * * dptr = (u8 * * )ptrs ;
917
924
u8 * p , * q ;
918
- unsigned long d ;
925
+ unsigned long vl , d ;
919
926
int z , z0 ;
920
927
921
928
z0 = stop ; /* P/Q right side optimization */
@@ -924,8 +931,9 @@ static void raid6_rvv8_xor_syndrome_real(int disks, int start, int stop,
924
931
925
932
asm volatile (".option push\n"
926
933
".option arch,+v\n"
927
- "vsetvli t0 , x0, e8, m1, ta, ma\n"
934
+ "vsetvli %0 , x0, e8, m1, ta, ma\n"
928
935
".option pop\n"
936
+ : "=&r" (vl )
929
937
);
930
938
931
939
/*
0 commit comments