ICE fixes for arm
authorreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 14 Jan 2010 00:24:12 +0000 (00:24 +0000)
committerreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 14 Jan 2010 00:24:12 +0000 (00:24 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@474 2bbb7eff-a529-9590-31e7-b0007b416f81

src/core/SkBitmapProcState_matrix_clamp.h
src/opts/SkBlitRow_opts_arm.cpp

index 22434680f4838293a41e55dfeebe49330fc9a3c3..9ccc9972d5ebb5d357cf7c5b2a83f8502aafc95e 100644 (file)
@@ -842,9 +842,13 @@ static void PERSP_FILTER_NAME(const SkBitmapProcState& s,
                 wide_i = vshlq_n_s32 (wide_i, 14);
 
                 /* SkClampMax(((f + one)) >> 16, max) */
-                wide_fy1 = vaddq_s32 (wide_y, vdupq_n_s32(oneY));
-                wide_fy1 = vmaxq_s32 (vshrq_n_s32 (wide_fy1, 16), vdupq_n_s32 (0));
-                wide_fy1 = vminq_s32 (wide_fy1, vdupq_n_s32 (maxY));
+
+                /* wide_fy1_1 and wide_fy1_2 are just temporary variables to
+                 * work-around an ICE in debug */
+                int32x4_t wide_fy1_1 = vaddq_s32 (wide_y, vdupq_n_s32(oneY));
+                int32x4_t wide_fy1_2 = vmaxq_s32 (vshrq_n_s32 (wide_fy1_1, 16),
+                                                  vdupq_n_s32 (0));
+                wide_fy1 = vminq_s32 (wide_fy1_2, vdupq_n_s32 (maxY));
 
                 /* final combination */
                 wide_y = vorrq_s32 (wide_i, wide_fy1);
index cb72473a6c33e6e40d1275cb8e95f6574c253d90..78fc90760614a194ba139bd9de71167022d0871c 100644 (file)
@@ -837,7 +837,11 @@ static void S32A_D565_Opaque_Dither_neon (uint16_t * SK_RESTRICT dst,
             if (c) {
                 unsigned a = SkGetPackedA32(c);
                 
-                int d = SkAlphaMul(DITHER_VALUE(x), SkAlpha255To256(a));
+                // dither and alpha are just temporary variables to work-around
+                // an ICE in debug.
+                unsigned dither = DITHER_VALUE(x);
+                unsigned alpha = SkAlpha255To256(a);
+                int d = SkAlphaMul(dither, alpha);
                 
                 unsigned sr = SkGetPackedR32(c);
                 unsigned sg = SkGetPackedG32(c);