Re: [RFC PATCH v8 15/21] riscv: Add vector extension XOR implementation
From: Greentime Hu
Date: Tue Sep 28 2021 - 03:00:26 EST
Christoph Hellwig <hch@xxxxxxxxxxxxx> 於 2021年9月9日 週四 下午2:12寫道:
>
> On Thu, Sep 09, 2021 at 01:45:27AM +0800, Greentime Hu wrote:
> > +extern void xor_regs_2_(unsigned long bytes, unsigned long *p1,
> > + unsigned long *p2);
> > +extern void xor_regs_3_(unsigned long bytes, unsigned long *p1,
> > + unsigned long *p2, unsigned long *p3);
> > +extern void xor_regs_4_(unsigned long bytes, unsigned long *p1,
> > + unsigned long *p2, unsigned long *p3,
> > + unsigned long *p4);
> > +extern void xor_regs_5_(unsigned long bytes, unsigned long *p1,
> > + unsigned long *p2, unsigned long *p3, unsigned long *p4,
> > + unsigned long *p5);
>
> There is no need for externs on function declarations ever.
>
Ok, I'll remove it.
> > +static void xor_rvv_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
> > +{
> > + kernel_rvv_begin();
> > + xor_regs_2_(bytes, p1, p2);
> > + kernel_rvv_end();
> > +}
>
> This looks strange. Why these wrappers?
We don't use rvv in kernel space generally. If we want to use it, we
need to save all vector registers first.
Just like arm64/x86 implementation in
arch/arm64/include/asm/xor.h
arch/x86/include/asm/xor.h