[Pixman] [PATCH 02/14] ARMv6: Minor optimisation

Siarhei Siamashka siarhei.siamashka at gmail.com
Sun Oct 13 18:09:58 PDT 2013

Hi Ben,

First a nitpick, which applies to some other patches too. "Minor
optimisation" is not a very good commit summary because it is way
too generic and does not say much about the patch itself.

The https://www.kernel.org/doc/Documentation/SubmittingPatches
guide from the Linux kernel provides a good rationale for having
descriptive commit summaries:

  Bear in mind that the "summary phrase" of your email becomes a
  globally-unique identifier for that patch.  It propagates all the way
  into the git changelog.  The "summary phrase" may later be used in
  developer discussions which refer to the patch.  People will want to
  google for the "summary phrase" to read discussion regarding that
  patch.  It will also be the only thing that people may quickly see
  when, two or three months later, they are going through perhaps
  thousands of patches using tools such as "gitk" or "git log

  For these reasons, the "summary" must be no more than 70-75
  characters, and it must describe both what the patch changes, as well
  as why the patch might be necessary.  It is challenging to be both
  succinct and descriptive, but that is what a well-written summary
  should do.

Even taking "knock off one instruction per row" from the commit
message and moving it into the summary string would be a lot more

On Wed,  2 Oct 2013 00:00:22 +0100
Ben Avison <bavison at riscosopen.org> wrote:

> This knocks off one instruction per row. The effect is probably too small to
> be measurable, but might as well be included. The second occurrence of this
> sequence doesn't actually benefit at all, but is changed for consistency.
> ---
>  pixman/pixman-arm-simd-asm.h |   11 ++++-------
>  1 file changed, 4 insertions(+), 7 deletions(-)

Simplification of the code and the reduction of the number of source
lines is good. Thanks.

> diff --git a/pixman/pixman-arm-simd-asm.h b/pixman/pixman-arm-simd-asm.h
> index 74400c1..3a2c250 100644
> --- a/pixman/pixman-arm-simd-asm.h
> +++ b/pixman/pixman-arm-simd-asm.h
> @@ -741,12 +741,9 @@ fname:
>          preload_leading_step1  mask_bpp, WK2, MASK
>          preload_leading_step1  dst_r_bpp, WK3, DST
> -        tst     DST, #15
> +        ands    WK0, DST, #15
>          beq     154f
> -        rsb     WK0, DST, #0 /* bits 0-3 = number of leading bytes until destination aligned */
> -  .if (src_bpp != 0 && src_bpp != 2*dst_w_bpp) || (mask_bpp != 0 && mask_bpp != 2*dst_w_bpp)
> -        PF  and,    WK0, WK0, #15
> -  .endif
> +        rsb     WK0, WK0, #16 /* bits 0-3 = number of leading bytes until destination aligned */

Maybe it is better to also update the comment here? Because now it
applies not only to just bits 0-3, but to the whole WK0 register.

Also could you remind me about what was special about the removed .if
check and why it was there earlier?

>          preload_leading_step2  src_bpp, src_bpp_shift, WK1, SRC
>          preload_leading_step2  mask_bpp, mask_bpp_shift, WK2, MASK
> @@ -787,9 +784,9 @@ fname:
>          preload_line 0, dst_r_bpp, dst_bpp_shift, DST
>          sub     X, X, #128/dst_w_bpp     /* simplifies inner loop termination */
> -        tst     DST, #15
> +        ands    WK0, DST, #15
>          beq     164f
> -        rsb     WK0, DST, #0 /* bits 0-3 = number of leading bytes until destination aligned */
> +        rsb     WK0, WK0, #16 /* bits 0-3 = number of leading bytes until destination aligned */
>          leading_15bytes  process_head, process_tail

Best regards,
Siarhei Siamashka

More information about the Pixman mailing list