public inbox for libc-ports@sourceware.org
 help / color / mirror / Atom feed
From: Andrew T Pinski <pinskia@gmail.com>
To: Maxim Kuvyrkov <maxim_kuvyrkov@mentor.com>
Cc: "Joseph S.  Myers" <joseph@codesourcery.com>, libc-ports@sourceware.org
Subject: Re: [PATCH] Optimize MIPS memcpy
Date: Mon, 03 Sep 2012 09:12:00 -0000	[thread overview]
Message-ID: <5044746c.23eb440a.75e2.618f@mx.google.com> (raw)
In-Reply-To: <C54042E9-C90C-46D1-A382-A0895AC9EFE3@mentor.com>

Forgot to CC libc-ports@ .
On Sat, 2012-09-01 at 18:15 +1200, Maxim Kuvyrkov wrote:
> This patch improves MIPS assembly implementations of memcpy.  Two optimizations are added: prefetching of data for subsequent iterations of memcpy loop and pipelined expansion of unaligned memcpy.  These optimizations speed up MIPS memcpy by about 10%.
> 
> The prefetching part is straightforward: it adds prefetching of a cache line (32 bytes) for +1 iteration for unaligned case and +2 iteration for aligned case.  The rationale here is that it will take prefetch to acquire data about same time as 1 iteration of unaligned loop or 2 iterations of aligned loop.  Values for these parameters were tuned on a modern MIPS processor.
> 

This might hurt Octeon as the cache line size there is 128 bytes.  Can
you say which modern MIPS processor which this has been tuned with?  And
is there a way to not hard code 32 in the assembly but in a macro
instead.

Thanks,
Andrew Pinski


> The pipelined expansion of unaligned loop is implemented in a similar fashion as expansion of the aligned loop.  The assembly is tricky, but it works.
> 
> These changes are almost 3 years old, and have been thoroughly tested in CodeSourcery MIPS toolchains.  Retested with current trunk with no regressions for n32, n64 and o32 ABIs.
> 
> OK to apply?
> 
> --
> Maxim Kuvyrkov
> Mentor Graphics
> 
> 



  parent reply	other threads:[~2012-09-03  9:12 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-01  6:16 Maxim Kuvyrkov
2012-09-01 16:37 ` Joseph S. Myers
2012-09-03  9:12 ` Andrew T Pinski [this message]
2012-09-03 17:12   ` Maxim Kuvyrkov
2012-09-04 15:09   ` Steve Ellcey
2012-09-04 15:14     ` Carlos O'Donell
2012-09-04 17:03       ` Steve Ellcey
2012-09-04 17:28         ` Carlos O'Donell
2012-09-05  0:43     ` Maxim Kuvyrkov
2012-09-06 16:25       ` Steve Ellcey
2012-09-06 18:43         ` Roland McGrath
2012-09-06 19:37           ` Steve Ellcey
2012-09-07 21:24         ` Maxim Kuvyrkov
2012-09-11  4:35         ` Maxim Kuvyrkov
2012-09-11 15:18           ` Steve Ellcey
2012-09-20  9:05             ` Maxim Kuvyrkov
2012-09-20 18:38               ` Steve Ellcey
2012-09-28  3:48                 ` Maxim Kuvyrkov
2012-10-06  4:43                   ` Maxim Kuvyrkov
2012-10-08 17:04                     ` Steve Ellcey
2012-10-08 22:31                       ` Maxim Kuvyrkov
2012-10-09 20:50                         ` Steve Ellcey
2012-10-15 17:49                         ` Steve Ellcey
2012-10-15 20:20                           ` Andrew Pinski
2012-10-15 20:34                             ` Steve Ellcey
2012-10-15 20:42                               ` Andrew Pinski
2012-10-15 20:50                                 ` Andrew Pinski
2012-10-15 21:36                                   ` Steve Ellcey
2012-10-15 21:47                                     ` Maxim Kuvyrkov
2012-10-17 17:30                                       ` Steve Ellcey
2012-10-29 18:00                                         ` Steve Ellcey
2012-10-29 18:03                                           ` Maxim Kuvyrkov
2012-10-30  7:16                                           ` Maxim Kuvyrkov
2012-10-30  7:19                                             ` Maxim Kuvyrkov
2012-10-30 17:46                                             ` Steve Ellcey
2012-10-30 21:56                                               ` Maxim Kuvyrkov
2012-10-30 22:19                                                 ` Steve Ellcey
2012-12-19  1:51                                                   ` Maxim Kuvyrkov
2012-12-19 16:59                                                     ` Steve Ellcey
2012-10-31 19:27                                         ` Andreas Jaeger
2012-10-31 20:04                                           ` Steve Ellcey
2012-10-15 22:10                                     ` Joseph S. Myers
2012-10-15 21:29                               ` Maciej W. Rozycki
2012-10-15 22:05                           ` Maxim Kuvyrkov
2012-09-21 18:47               ` Steve Ellcey
2012-09-21 18:57                 ` Joseph S. Myers
2012-09-21 20:41                   ` [PATCH] Optimize MIPS memcpy (mips glibc test results) Steve Ellcey
2012-09-21 20:49                     ` Joseph S. Myers
2012-09-21 20:56                       ` Steve Ellcey
2012-09-21 19:12                 ` [PATCH] Optimize MIPS memcpy Maxim Kuvyrkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5044746c.23eb440a.75e2.618f@mx.google.com \
    --to=pinskia@gmail.com \
    --cc=joseph@codesourcery.com \
    --cc=libc-ports@sourceware.org \
    --cc=maxim_kuvyrkov@mentor.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).