diff options
Diffstat (limited to 'lib/raid6')
| -rw-r--r-- | lib/raid6/rvv.c | 48 | 
1 files changed, 28 insertions, 20 deletions
| diff --git a/lib/raid6/rvv.c b/lib/raid6/rvv.c index f0887344b274..7d82efa5b14f 100644 --- a/lib/raid6/rvv.c +++ b/lib/raid6/rvv.c @@ -26,9 +26,9 @@ static int rvv_has_vector(void)  static void raid6_rvv1_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)  {  	u8 **dptr = (u8 **)ptrs; -	unsigned long d; -	int z, z0;  	u8 *p, *q; +	unsigned long vl, d; +	int z, z0;  	z0 = disks - 3;		/* Highest data disk */  	p = dptr[z0 + 1];		/* XOR parity */ @@ -36,8 +36,9 @@ static void raid6_rvv1_gen_syndrome_real(int disks, unsigned long bytes, void **  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	 /* 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,  {  	u8 **dptr = (u8 **)ptrs;  	u8 *p, *q; -	unsigned long d; +	unsigned long vl, d;  	int z, z0;  	z0 = stop;		/* P/Q right side optimization */ @@ -108,8 +109,9 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	/* v0:wp0, v1:wq0, v2:wd0/w20, v3:w10 */ @@ -195,9 +197,9 @@ static void raid6_rvv1_xor_syndrome_real(int disks, int start, int stop,  static void raid6_rvv2_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)  {  	u8 **dptr = (u8 **)ptrs; -	unsigned long d; -	int z, z0;  	u8 *p, *q; +	unsigned long vl, d; +	int z, z0;  	z0 = disks - 3;		/* Highest data disk */  	p = dptr[z0 + 1];		/* XOR parity */ @@ -205,8 +207,9 @@ static void raid6_rvv2_gen_syndrome_real(int disks, unsigned long bytes, void **  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	/* @@ -287,7 +290,7 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,  {  	u8 **dptr = (u8 **)ptrs;  	u8 *p, *q; -	unsigned long d; +	unsigned long vl, d;  	int z, z0;  	z0 = stop;		/* P/Q right side optimization */ @@ -296,8 +299,9 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	/* @@ -413,9 +417,9 @@ static void raid6_rvv2_xor_syndrome_real(int disks, int start, int stop,  static void raid6_rvv4_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)  {  	u8 **dptr = (u8 **)ptrs; -	unsigned long d; -	int z, z0;  	u8 *p, *q; +	unsigned long vl, d; +	int z, z0;  	z0 = disks - 3;	/* Highest data disk */  	p = dptr[z0 + 1];	/* XOR parity */ @@ -423,8 +427,9 @@ static void raid6_rvv4_gen_syndrome_real(int disks, unsigned long bytes, void **  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	/* @@ -539,7 +544,7 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,  {  	u8 **dptr = (u8 **)ptrs;  	u8 *p, *q; -	unsigned long d; +	unsigned long vl, d;  	int z, z0;  	z0 = stop;		/* P/Q right side optimization */ @@ -548,8 +553,9 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	/* @@ -721,9 +727,9 @@ static void raid6_rvv4_xor_syndrome_real(int disks, int start, int stop,  static void raid6_rvv8_gen_syndrome_real(int disks, unsigned long bytes, void **ptrs)  {  	u8 **dptr = (u8 **)ptrs; -	unsigned long d; -	int z, z0;  	u8 *p, *q; +	unsigned long vl, d; +	int z, z0;  	z0 = disks - 3;	/* Highest data disk */  	p = dptr[z0 + 1];	/* XOR parity */ @@ -731,8 +737,9 @@ static void raid6_rvv8_gen_syndrome_real(int disks, unsigned long bytes, void **  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	/* @@ -915,7 +922,7 @@ static void raid6_rvv8_xor_syndrome_real(int disks, int start, int stop,  {  	u8 **dptr = (u8 **)ptrs;  	u8 *p, *q; -	unsigned long d; +	unsigned long vl, d;  	int z, z0;  	z0 = stop;		/* P/Q right side optimization */ @@ -924,8 +931,9 @@ static void raid6_rvv8_xor_syndrome_real(int disks, int start, int stop,  	asm volatile (".option	push\n"  		      ".option	arch,+v\n" -		      "vsetvli	t0, x0, e8, m1, ta, ma\n" +		      "vsetvli	%0, x0, e8, m1, ta, ma\n"  		      ".option	pop\n" +		      : "=&r" (vl)  	);  	/* | 
