Title: [97970] trunk/Source/WebCore
Revision
97970
Author
zherc...@webkit.org
Date
2011-10-20 06:05:21 -0700 (Thu, 20 Oct 2011)

Log Message

Improve NEON based GaussianBlur
https://bugs.webkit.org/show_bug.cgi?id=70493

Reviewed by Csaba Osztrogonác.

vmov instruction is less complex than vtbl.

* platform/graphics/filters/arm/FEGaussianBlurNEON.cpp:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (97969 => 97970)


--- trunk/Source/WebCore/ChangeLog	2011-10-20 12:57:47 UTC (rev 97969)
+++ trunk/Source/WebCore/ChangeLog	2011-10-20 13:05:21 UTC (rev 97970)
@@ -1,3 +1,14 @@
+2011-10-20  Zoltan Herczeg  <zherc...@webkit.org>
+
+        Improve NEON based GaussianBlur
+        https://bugs.webkit.org/show_bug.cgi?id=70493
+
+        Reviewed by Csaba Osztrogonác.
+
+        vmov instruction is less complex than vtbl.
+
+        * platform/graphics/filters/arm/FEGaussianBlurNEON.cpp:
+
 2011-10-20  Pavel Feldman  <pfeld...@google.com>
 
         Not reviewed: follow up to 97961 - dispatching of hide on detach was missing.

Modified: trunk/Source/WebCore/platform/graphics/filters/arm/FEGaussianBlurNEON.cpp (97969 => 97970)


--- trunk/Source/WebCore/platform/graphics/filters/arm/FEGaussianBlurNEON.cpp	2011-10-20 12:57:47 UTC (rev 97969)
+++ trunk/Source/WebCore/platform/graphics/filters/arm/FEGaussianBlurNEON.cpp	2011-10-20 13:05:21 UTC (rev 97970)
@@ -34,8 +34,6 @@
 namespace WebCore {
 
 static WTF_ALIGNED(unsigned char, s_FEGaussianBlurConstantsForNeon[], 16) = {
-    // Mapping from ARM to NEON registers.
-    0, 16, 16, 16, 1,  16, 16, 16, 2,  16, 16, 16, 3,  16, 16, 16,
     // Mapping from NEON to ARM registers.
     0, 4,  8,  12, 16, 16, 16, 16
 };
@@ -93,10 +91,7 @@
 #define PIXEL_D11               "d5[1]"
 #define REMAINING_STRIDES_S0    "s12"
 
-#define READ_RANGE              "d16-d18"
-#define REMAP_ARM_NEON1_Q       "d16"
-#define REMAP_ARM_NEON2_Q       "d17"
-#define REMAP_NEON_ARM_Q        "d18"
+#define REMAP_NEON_ARM_Q        "d16"
 
 asm ( // NOLINT
 ".globl " TOSTRING(neonDrawAllChannelGaussianBlur) NL
@@ -119,7 +114,7 @@
     "movcs " MAX_KERNEL_SIZE_R ", " STRIDE_WIDTH_R NL
     "add " SOURCE_LINE_END_R ", " SOURCE_LINE_END_R ", " SOURCE_R NL
     "vdup.f32 " INVERTED_KERNEL_SIZE_Q ", " INIT_INVERTED_KERNEL_SIZE_R NL
-    "vld1.f32 { " READ_RANGE " }, [" INIT_PAINTING_CONSTANTS_R "]!" NL
+    "vld1.f32 { " REMAP_NEON_ARM_Q " }, [" INIT_PAINTING_CONSTANTS_R "]!" NL
 
 ".allChannelMainLoop:" NL
 
@@ -131,8 +126,8 @@
     "bcs .allChannelInitSumDone" NL
 ".allChannelInitSum:" NL
     "vld1.u32 " PIXEL_D00 ", [" INIT_SUM_R "], " STRIDE_R NL
-    "vtbl.8 " PIXEL_D1 ", {" PIXEL_D0 "}, " REMAP_ARM_NEON2_Q NL
-    "vtbl.8 " PIXEL_D0 ", {" PIXEL_D0 "}, " REMAP_ARM_NEON1_Q NL
+    "vmovl.u8 " PIXEL_Q ", " PIXEL_D0 NL
+    "vmovl.u16 " PIXEL_Q ", " PIXEL_D0 NL
     "vadd.u32 " SUM_Q ", " SUM_Q ", " PIXEL_Q NL
     "cmp " INIT_SUM_R ", " SOURCE_END_R NL
     "bcc .allChannelInitSum" NL
@@ -154,16 +149,16 @@
     "cmp " LEFT_R ", " SOURCE_R NL
     "bcc .allChannelSkipLeft" NL
     "vld1.u32 " PIXEL_D00 ", [" LEFT_R "]" NL
-    "vtbl.8 " PIXEL_D1 ", {" PIXEL_D0 "}, " REMAP_ARM_NEON2_Q NL
-    "vtbl.8 " PIXEL_D0 ", {" PIXEL_D0 "}, " REMAP_ARM_NEON1_Q NL
+    "vmovl.u8 " PIXEL_Q ", " PIXEL_D0 NL
+    "vmovl.u16 " PIXEL_Q ", " PIXEL_D0 NL
     "vsub.u32 " SUM_Q ", " SUM_Q ", " PIXEL_Q NL
 ".allChannelSkipLeft: " NL
 
     "cmp " RIGHT_R ", " SOURCE_END_R NL
     "bcs .allChannelSkipRight" NL
     "vld1.u32 " PIXEL_D00 ", [" RIGHT_R "]" NL
-    "vtbl.8 " PIXEL_D1 ", {" PIXEL_D0 "}, " REMAP_ARM_NEON2_Q NL
-    "vtbl.8 " PIXEL_D0 ", {" PIXEL_D0 "}, " REMAP_ARM_NEON1_Q NL
+    "vmovl.u8 " PIXEL_Q ", " PIXEL_D0 NL
+    "vmovl.u16 " PIXEL_Q ", " PIXEL_D0 NL
     "vadd.u32 " SUM_Q ", " SUM_Q ", " PIXEL_Q NL
 ".allChannelSkipRight: " NL
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to