[PATCH v6 2/4] powerpc/64: enhance memcmp() with VMX instruction for long bytes comparision
Simon Guo
wei.guo.simon at gmail.com
Wed Jun 6 16:42:27 AEST 2018
Hi segher,
On Wed, May 30, 2018 at 05:03:21PM +0800, Simon Guo wrote:
> On Wed, May 30, 2018 at 03:35:40AM -0500, Segher Boessenkool wrote:
> > On Wed, May 30, 2018 at 04:14:02PM +0800, Simon Guo wrote:
> > > Hi Segher,
> > > On Mon, May 28, 2018 at 06:05:59AM -0500, Segher Boessenkool wrote:
> > > > On Fri, May 25, 2018 at 12:07:34PM +0800, wei.guo.simon at gmail.com wrote:
> > > > > + /* save and restore cr0 */
> > > > > + mfocrf r5,64
> > > > > + EXIT_VMX_OPS
> > > > > + mtocrf 64,r5
> > > > > + b .LcmpAB_lightweight
> > > >
> > > > That's cr1, not cr0. You can use mcrf instead, it is cheaper (esp. if
> > > > you have it in a non-volatile CR field before so you need only one, if any).
> > > >
> > > You are right :) How about using mtcr/mfcr instead, I think they are
> > > fast as well and more readable.
> >
> > Those are much worse than m[ft]ocrf.
> >
> > You probably should just shuffle things around so that EXIT_VMX_OPS
> > does not clobber the CR field you need to keep.
> Let me use mcrf then :)
I now felt unformatable to use mcrf like:
mcrf 7,0
since I cannot 100% confident that compiler will not use CR7 or other
CR# in exit_vmx_ops().
Can we switch back to mfocrf/mtocrf with correct CR0 value?
mfocrf r5,128
...
mtocrf 128,r5
Thanks,
- Simon
More information about the Linuxppc-dev
mailing list