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

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

Issue 1061603002: Code's more readable when SkPMFloat is an Sk4f. (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: fix neon Created 5 years, 8 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/effects/SkColorMatrixFilter.cpp ('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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 private: 180 private:
181 float64x2_t fVec; 181 float64x2_t fVec;
182 }; 182 };
183 #endif//defined(SK_CPU_ARM64) 183 #endif//defined(SK_CPU_ARM64)
184 184
185 template <> 185 template <>
186 class SkNf<4, float> { 186 class SkNf<4, float> {
187 typedef SkNi<4, int32_t> Ni; 187 typedef SkNi<4, int32_t> Ni;
188 public: 188 public:
189 SkNf(float32x4_t vec) : fVec(vec) {} 189 SkNf(float32x4_t vec) : fVec(vec) {}
190 float32x4_t vec() const { return fVec; }
191 190
192 SkNf() {} 191 SkNf() {}
193 explicit SkNf(float val) : fVec(vdupq_n_f32(val)) {} 192 explicit SkNf(float val) : fVec(vdupq_n_f32(val)) {}
194 static SkNf Load(const float vals[4]) { return vld1q_f32(vals); } 193 static SkNf Load(const float vals[4]) { return vld1q_f32(vals); }
195 SkNf(float a, float b, float c, float d) { fVec = (float32x4_t) { a, b, c, d }; } 194 SkNf(float a, float b, float c, float d) { fVec = (float32x4_t) { a, b, c, d }; }
196 195
197 void store(float vals[4]) const { vst1q_f32(vals, fVec); } 196 void store(float vals[4]) const { vst1q_f32(vals, fVec); }
198 197
199 SkNf approxInvert() const { 198 SkNf approxInvert() const {
200 float32x4_t est0 = vrecpeq_f32(fVec), 199 float32x4_t est0 = vrecpeq_f32(fVec),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 est2 = vmulq_f32(vrsqrtsq_f32(fVec, vmulq_f32(est1, est1)), est1); 244 est2 = vmulq_f32(vrsqrtsq_f32(fVec, vmulq_f32(est1, est1)), est1);
246 return vmulq_f32(fVec, est2); 245 return vmulq_f32(fVec, est2);
247 #endif 246 #endif
248 } 247 }
249 248
250 template <int k> float kth() const { 249 template <int k> float kth() const {
251 SkASSERT(0 <= k && k < 4); 250 SkASSERT(0 <= k && k < 4);
252 return vgetq_lane_f32(fVec, k&3); 251 return vgetq_lane_f32(fVec, k&3);
253 } 252 }
254 253
255 private: 254 protected:
256 float32x4_t fVec; 255 float32x4_t fVec;
257 }; 256 };
258 257
259 #endif//SkNx_neon_DEFINED 258 #endif//SkNx_neon_DEFINED
OLDNEW
« no previous file with comments | « src/effects/SkColorMatrixFilter.cpp ('k') | src/opts/SkNx_sse.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698