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

Side by Side Diff: src/opts/SkNx_neon.h

Issue 1214443002: Color dodge and burn with SkPMFloat. (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: reed Created 5 years, 5 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 | « src/core/SkPMFloat.h ('k') | src/opts/SkNx_sse.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkNx_neon_DEFINED 8 #ifndef SkNx_neon_DEFINED
9 #define SkNx_neon_DEFINED 9 #define SkNx_neon_DEFINED
10 10
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 auto v = vreinterpretq_u32_f32(fVec); 290 auto v = vreinterpretq_u32_f32(fVec);
291 return vgetq_lane_u32(v,0) && vgetq_lane_u32(v,1) 291 return vgetq_lane_u32(v,0) && vgetq_lane_u32(v,1)
292 && vgetq_lane_u32(v,2) && vgetq_lane_u32(v,3); 292 && vgetq_lane_u32(v,2) && vgetq_lane_u32(v,3);
293 } 293 }
294 bool anyTrue() const { 294 bool anyTrue() const {
295 auto v = vreinterpretq_u32_f32(fVec); 295 auto v = vreinterpretq_u32_f32(fVec);
296 return vgetq_lane_u32(v,0) || vgetq_lane_u32(v,1) 296 return vgetq_lane_u32(v,0) || vgetq_lane_u32(v,1)
297 || vgetq_lane_u32(v,2) || vgetq_lane_u32(v,3); 297 || vgetq_lane_u32(v,2) || vgetq_lane_u32(v,3);
298 } 298 }
299 299
300 SkNf thenElse(const SkNf& t, const SkNf& e) const {
301 uint32x4_t ci = vreinterpretq_u32_f32(fVec),
302 ti = vreinterpretq_u32_f32(t.fVec),
303 ei = vreinterpretq_u32_f32(e.fVec);
304 return vreinterpretq_f32_u32(vorrq_u32(vandq_u32(ti, ci), vbicq_u32(ei, ci)));
305 }
306
300 float32x4_t fVec; 307 float32x4_t fVec;
301 }; 308 };
302 309
303 template <> 310 template <>
304 class SkNi<8, uint16_t> { 311 class SkNi<8, uint16_t> {
305 public: 312 public:
306 SkNi(const uint16x8_t& vec) : fVec(vec) {} 313 SkNi(const uint16x8_t& vec) : fVec(vec) {}
307 314
308 SkNi() {} 315 SkNi() {}
309 explicit SkNi(uint16_t val) : fVec(vdupq_n_u16(val)) {} 316 explicit SkNi(uint16_t val) : fVec(vdupq_n_u16(val)) {}
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 uint8x16_t fVec; 379 uint8x16_t fVec;
373 }; 380 };
374 381
375 #undef SHIFT32 382 #undef SHIFT32
376 #undef SHIFT16 383 #undef SHIFT16
377 #undef SHIFT8 384 #undef SHIFT8
378 385
379 } // namespace 386 } // namespace
380 387
381 #endif//SkNx_neon_DEFINED 388 #endif//SkNx_neon_DEFINED
OLDNEW
« no previous file with comments | « src/core/SkPMFloat.h ('k') | src/opts/SkNx_sse.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698