| Index: src/opts/SkNx_neon.h
|
| diff --git a/src/opts/SkNx_neon.h b/src/opts/SkNx_neon.h
|
| index cdc4615849556ff185afd59f15c82e8d5a5320b5..2cb8eb348d448e1aa9af4685c9739fb9123f46e7 100644
|
| --- a/src/opts/SkNx_neon.h
|
| +++ b/src/opts/SkNx_neon.h
|
| @@ -9,17 +9,6 @@
|
| #define SkNx_neon_DEFINED
|
|
|
| #define SKNX_IS_FAST
|
| -
|
| -// ARMv8 has vrndmq_f32 to floor 4 floats. Here we emulate it:
|
| -// - round by adding (1<<23) with our sign, then subtracting it;
|
| -// - if that rounded value is bigger than our input, subtract 1.
|
| -static inline float32x4_t armv7_vrndmq_f32(float32x4_t v) {
|
| - auto sign = vandq_u32((uint32x4_t)v, vdupq_n_u32(1<<31));
|
| - auto bias = (float32x4_t)(vorrq_u32((uint32x4_t)vdupq_n_f32(1<<23), sign));
|
| - auto rounded = vsubq_f32(vaddq_f32(v, bias), bias);
|
| - auto too_big = vcgtq_f32(rounded, v);
|
| - return vsubq_f32(rounded, (float32x4_t)vandq_u32(too_big, (uint32x4_t)vdupq_n_f32(1)));
|
| -}
|
|
|
| // Well, this is absurd. The shifts require compile-time constant arguments.
|
|
|
| @@ -172,14 +161,6 @@
|
| static SkNx Max(const SkNx& l, const SkNx& r) { return vmaxq_f32(l.fVec, r.fVec); }
|
|
|
| SkNx abs() const { return vabsq_f32(fVec); }
|
| - SkNx floor() const {
|
| - #if defined(SK_CPU_ARM64)
|
| - return vrndmq_f32(fVec);
|
| - #else
|
| - return armv7_vrndmq_f32(fVec);
|
| - #endif
|
| - }
|
| -
|
|
|
| SkNx rsqrt0() const { return vrsqrteq_f32(fVec); }
|
| SkNx rsqrt1() const {
|
|
|