Add SSSE3 acceleration for S32_{opaque,alpha}_D32_filter_DX; should yield
25% speedup on 64b architectures, something smaller but still valuable on
32b.

Adds new files, breaking client gyps.

http://codereview.appspot.com/5515044/



git-svn-id: http://skia.googlecode.com/svn/trunk@3193 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/opts.gyp b/gyp/opts.gyp
index 1f67e00..66348f6 100644
--- a/gyp/opts.gyp
+++ b/gyp/opts.gyp
@@ -31,18 +31,23 @@
         '../src/opts',
       ],
       'conditions': [
-        [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris"]', {
-          'cflags': [
-            '-msse2',
-          ],
-        }],
         [ 'skia_target_arch != "arm"', {
+          'conditions': [
+            [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris"]', {
+              'cflags': [
+                '-msse2',
+              ],
+            }],
+          ],
           'sources': [
             '../src/opts/opts_check_SSE2.cpp',
             '../src/opts/SkBitmapProcState_opts_SSE2.cpp',
             '../src/opts/SkBlitRow_opts_SSE2.cpp',
             '../src/opts/SkUtils_opts_SSE2.cpp',
           ],
+          'dependencies': [
+            'opts_ssse3',
+          ],
         }],
         [ 'skia_target_arch == "arm" and armv7 == 1', {
           # The assembly uses the frame pointer register (r7 in Thumb/r11 in
@@ -71,6 +76,31 @@
         }],
       ],
     },
+    # For the same lame reasons as what is done for skia_opts, we have to
+    # create another target specifically for SSSE3 code as we would not want
+    # to compile the SSE2 code with -mssse3 which would potentially allow
+    # gcc to generate SSSE3 code.
+    {
+      'target_name': 'opts_ssse3',
+      'type': 'static_library',
+      'include_dirs': [
+        '../include/config',
+        '../include/core',
+        '../src/core',
+      ],
+      'conditions': [
+        [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris"]', {
+          'cflags': [
+            '-mssse3',
+          ],
+        }],
+        [ 'skia_target_arch != "arm"', {
+          'sources': [
+            '../src/opts/SkBitmapProcState_opts_SSSE3.cpp',
+          ],
+        }],
+      ],
+    },
   ],
 }