Improve SkARGB32_A8_BlitMask_SSE2
authorjmuizelaar <jmuizelaar@mozilla.com>
Thu, 9 Oct 2014 18:43:02 +0000 (11:43 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 9 Oct 2014 18:43:02 +0000 (11:43 -0700)
commit60e4ad7b29f50ebd7698d2d37580d5c8da5ce600
tree1141961fe3fcaed60f76ee319cab400c96936667
parent12b1831ea49f3d88e93b7d2793d94852d03813e8
Improve SkARGB32_A8_BlitMask_SSE2

With clang this:

-       movzbl  -3(%rbx), %edx
-       pxor    %xmm5, %xmm5
-       pinsrw  $0, %edx, %xmm5
-       pinsrw  $1, %edx, %xmm5
-       movzbl  -2(%rbx), %edx
-       pinsrw  $2, %edx, %xmm5
-       pinsrw  $3, %edx, %xmm5
-       movzbl  -1(%rbx), %edx
-       pinsrw  $4, %edx, %xmm5
-       pinsrw  $5, %edx, %xmm5
-       movzbl  (%rbx), %edx
-       pinsrw  $6, %edx, %xmm5
-       pinsrw  $7, %edx, %xmm5

becomes:

+       movd    (%rbx), %xmm4
+       punpcklbw       %xmm9, %xmm4
+       punpcklwd       %xmm4, %xmm4

And clang already does better codegen than msvc 2013 on this.

BUG=skia:

Review URL: https://codereview.chromium.org/609823003
AUTHORS
src/opts/SkBlitRow_opts_SSE2.cpp