Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: src/core/SkConvolver.cpp

Issue 513833003: disable autovec on 32 *and* 64 bit builds for horiz. convolve (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "SkConvolver.h" 5 #include "SkConvolver.h"
6 #include "SkSize.h" 6 #include "SkSize.h"
7 #include "SkTypes.h" 7 #include "SkTypes.h"
8 8
9 namespace { 9 namespace {
10 10
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 // Store the new pixel. 151 // Store the new pixel.
152 outRow[outX * 4 + 0] = ClampTo8(accum[0]); 152 outRow[outX * 4 + 0] = ClampTo8(accum[0]);
153 outRow[outX * 4 + 1] = ClampTo8(accum[1]); 153 outRow[outX * 4 + 1] = ClampTo8(accum[1]);
154 outRow[outX * 4 + 2] = ClampTo8(accum[2]); 154 outRow[outX * 4 + 2] = ClampTo8(accum[2]);
155 if (hasAlpha) { 155 if (hasAlpha) {
156 outRow[outX * 4 + 3] = ClampTo8(accum[3]); 156 outRow[outX * 4 + 3] = ClampTo8(accum[3]);
157 } 157 }
158 } 158 }
159 } 159 }
160 160
161 // There's a bug somewhere here with GCC autovectorization (-ftree-vectorize ) on 32 bit builds. 161 // There's a bug somewhere here with GCC autovectorization (-ftree-vectorize ). We originally
162 // thought this was 32 bit only, but subsequent tests show that some 64 bit gcc compiles
163 // suffer here too.
164 //
162 // Dropping to -O2 disables -ftree-vectorize. GCC 4.6 needs noinline. http ://skbug.com/2575 165 // Dropping to -O2 disables -ftree-vectorize. GCC 4.6 needs noinline. http ://skbug.com/2575
163 #if defined(__i386) && SK_HAS_ATTRIBUTE(optimize) && defined(SK_RELEASE) 166 #if SK_HAS_ATTRIBUTE(optimize) && defined(SK_RELEASE)
164 #define SK_MAYBE_DISABLE_VECTORIZATION __attribute__((optimize("O2"), no inline)) 167 #define SK_MAYBE_DISABLE_VECTORIZATION __attribute__((optimize("O2"), no inline))
165 #else 168 #else
166 #define SK_MAYBE_DISABLE_VECTORIZATION 169 #define SK_MAYBE_DISABLE_VECTORIZATION
167 #endif 170 #endif
168 171
169 SK_MAYBE_DISABLE_VECTORIZATION 172 SK_MAYBE_DISABLE_VECTORIZATION
170 static void ConvolveHorizontallyAlpha(const unsigned char* srcData, 173 static void ConvolveHorizontallyAlpha(const unsigned char* srcData,
171 const SkConvolutionFilter1D& filter, 174 const SkConvolutionFilter1D& filter,
172 unsigned char* outRow) { 175 unsigned char* outRow) {
173 return ConvolveHorizontally<true>(srcData, filter, outRow); 176 return ConvolveHorizontally<true>(srcData, filter, outRow);
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 filterX.numValues(), curOutputRow , 480 filterX.numValues(), curOutputRow ,
478 sourceHasAlpha); 481 sourceHasAlpha);
479 } else { 482 } else {
480 ConvolveVertically(filterValues, filterLength, 483 ConvolveVertically(filterValues, filterLength,
481 firstRowForFilter, 484 firstRowForFilter,
482 filterX.numValues(), curOutputRow, 485 filterX.numValues(), curOutputRow,
483 sourceHasAlpha); 486 sourceHasAlpha);
484 } 487 }
485 } 488 }
486 } 489 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698