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

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

Issue 21122005: fold SK_CPU_HAS_CONDITION_INSTR through as always defined (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: typo Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/core/Sk64.cpp ('k') | src/core/SkMath.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* NEON optimized code (C) COPYRIGHT 2009 Motorola 1 /* NEON optimized code (C) COPYRIGHT 2009 Motorola
2 * 2 *
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "SkBitmapProcState.h" 7 #include "SkBitmapProcState.h"
8 #include "SkPerspIter.h" 8 #include "SkPerspIter.h"
9 #include "SkShader.h" 9 #include "SkShader.h"
10 #include "SkUtils.h" 10 #include "SkUtils.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 #define PREAMBLE_ARG_X , tileProcX, tileLowBitsProcX 105 #define PREAMBLE_ARG_X , tileProcX, tileLowBitsProcX
106 #define PREAMBLE_ARG_Y , tileProcY, tileLowBitsProcY 106 #define PREAMBLE_ARG_Y , tileProcY, tileLowBitsProcY
107 #define TILEX_PROCF(fx, max) SK_USHIFT16(tileProcX(fx) * ((max) + 1)) 107 #define TILEX_PROCF(fx, max) SK_USHIFT16(tileProcX(fx) * ((max) + 1))
108 #define TILEY_PROCF(fy, max) SK_USHIFT16(tileProcY(fy) * ((max) + 1)) 108 #define TILEY_PROCF(fy, max) SK_USHIFT16(tileProcY(fy) * ((max) + 1))
109 #define TILEX_LOW_BITS(fx, max) tileLowBitsProcX(fx, (max) + 1) 109 #define TILEX_LOW_BITS(fx, max) tileLowBitsProcX(fx, (max) + 1)
110 #define TILEY_LOW_BITS(fy, max) tileLowBitsProcY(fy, (max) + 1) 110 #define TILEY_LOW_BITS(fy, max) tileLowBitsProcY(fy, (max) + 1)
111 #include "SkBitmapProcState_matrix.h" 111 #include "SkBitmapProcState_matrix.h"
112 112
113 static inline U16CPU fixed_clamp(SkFixed x) 113 static inline U16CPU fixed_clamp(SkFixed x)
114 { 114 {
115 #ifdef SK_CPU_HAS_CONDITIONAL_INSTR 115 if (x < 0) {
116 if (x < 0)
117 x = 0; 116 x = 0;
118 if (x >> 16) 117 }
118 if (x >> 16) {
119 x = 0xFFFF; 119 x = 0xFFFF;
120 #else
121 if (x >> 16)
122 {
123 #if 0 // is this faster?
124 x = (~x >> 31) & 0xFFFF;
125 #else
126 if (x < 0)
127 x = 0;
128 else
129 x = 0xFFFF;
130 #endif
131 } 120 }
132 #endif
133 return x; 121 return x;
134 } 122 }
135 123
136 static inline U16CPU fixed_repeat(SkFixed x) 124 static inline U16CPU fixed_repeat(SkFixed x)
137 { 125 {
138 return x & 0xFFFF; 126 return x & 0xFFFF;
139 } 127 }
140 128
141 // Visual Studio 2010 (MSC_VER=1600) optimizes bit-shift code incorrectly. 129 // Visual Studio 2010 (MSC_VER=1600) optimizes bit-shift code incorrectly.
142 // See http://code.google.com/p/skia/issues/detail?id=472 130 // See http://code.google.com/p/skia/issues/detail?id=472
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 return fixed_clamp_lowbits; 166 return fixed_clamp_lowbits;
179 } else { 167 } else {
180 SkASSERT(SkShader::kMirror_TileMode == m || 168 SkASSERT(SkShader::kMirror_TileMode == m ||
181 SkShader::kRepeat_TileMode == m); 169 SkShader::kRepeat_TileMode == m);
182 // mirror and repeat have the same behavior for the low bits. 170 // mirror and repeat have the same behavior for the low bits.
183 return fixed_repeat_or_mirrow_lowbits; 171 return fixed_repeat_or_mirrow_lowbits;
184 } 172 }
185 } 173 }
186 174
187 static inline U16CPU int_clamp(int x, int n) { 175 static inline U16CPU int_clamp(int x, int n) {
188 #ifdef SK_CPU_HAS_CONDITIONAL_INSTR 176 if (x >= n) {
189 if (x >= n)
190 x = n - 1; 177 x = n - 1;
191 if (x < 0) 178 }
179 if (x < 0) {
192 x = 0; 180 x = 0;
193 #else
194 if ((unsigned)x >= (unsigned)n) {
195 if (x < 0) {
196 x = 0;
197 } else {
198 x = n - 1;
199 }
200 } 181 }
201 #endif
202 return x; 182 return x;
203 } 183 }
204 184
205 static inline U16CPU int_repeat(int x, int n) { 185 static inline U16CPU int_repeat(int x, int n) {
206 return sk_int_mod(x, n); 186 return sk_int_mod(x, n);
207 } 187 }
208 188
209 static inline U16CPU int_mirror(int x, int n) { 189 static inline U16CPU int_mirror(int x, int n) {
210 x = sk_int_mod(x, 2 * n); 190 x = sk_int_mod(x, 2 * n);
211 if (x >= n) { 191 if (x >= n) {
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 { 492 {
513 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; 493 return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index];
514 } 494 }
515 495
516 fTileProcX = choose_tile_proc(fTileModeX); 496 fTileProcX = choose_tile_proc(fTileModeX);
517 fTileProcY = choose_tile_proc(fTileModeY); 497 fTileProcY = choose_tile_proc(fTileModeY);
518 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX); 498 fTileLowBitsProcX = choose_tile_lowbits_proc(fTileModeX);
519 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY); 499 fTileLowBitsProcY = choose_tile_lowbits_proc(fTileModeY);
520 return GeneralXY_Procs[index]; 500 return GeneralXY_Procs[index];
521 } 501 }
OLDNEW
« no previous file with comments | « src/core/Sk64.cpp ('k') | src/core/SkMath.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698