aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jumper/SkJumper_vectors.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/jumper/SkJumper_vectors.h')
-rw-r--r--src/jumper/SkJumper_vectors.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/jumper/SkJumper_vectors.h b/src/jumper/SkJumper_vectors.h
index 2b76b035e1..8b6a2a4ebd 100644
--- a/src/jumper/SkJumper_vectors.h
+++ b/src/jumper/SkJumper_vectors.h
@@ -10,6 +10,7 @@
#include "SkJumper.h"
#include "SkJumper_misc.h"
+#include <stdint.h>
// This file contains vector types that SkJumper_stages.cpp uses to define stages.
@@ -17,7 +18,7 @@
#if !defined(__clang__)
#define JUMPER_IS_SCALAR
-#elif defined(__aarch64__) || defined(__ARM_VFPV4__)
+#elif defined(__ARM_NEON)
#define JUMPER_IS_NEON
#elif defined(__AVX512F__)
#define JUMPER_IS_AVX512
@@ -105,7 +106,6 @@
using U8 = V<uint8_t >;
// We polyfill a few routines that Clang doesn't build into ext_vector_types.
- SI F mad(F f, F m, F a) { return vfmaq_f32(a,f,m); }
SI F min(F a, F b) { return vminq_f32(a,b); }
SI F max(F a, F b) { return vmaxq_f32(a,b); }
SI F abs_ (F v) { return vabsq_f32(v); }
@@ -117,10 +117,12 @@
SI F if_then_else(I32 c, F t, F e) { return vbslq_f32((U32)c,t,e); }
#if defined(__aarch64__)
+ SI F mad(F f, F m, F a) { return vfmaq_f32(a,f,m); }
SI F floor_(F v) { return vrndmq_f32(v); }
SI F sqrt_(F v) { return vsqrtq_f32(v); }
SI U32 round(F v, F scale) { return vcvtnq_u32_f32(v*scale); }
#else
+ SI F mad(F f, F m, F a) { return vmlaq_f32(a,f,m); }
SI F floor_(F v) {
F roundtrip = vcvtq_f32_s32(vcvtq_s32_f32(v));
return roundtrip - if_then_else(roundtrip > v, 1, 0);
@@ -643,7 +645,7 @@ SI F approx_powf(F x, F y) {
}
SI F from_half(U16 h) {
-#if defined(JUMPER_IS_NEON)
+#if defined(__aarch64__)
return vcvt_f32_f16(h);
#elif defined(JUMPER_IS_AVX2) || defined(JUMPER_IS_AVX512)
@@ -663,7 +665,7 @@ SI F from_half(U16 h) {
}
SI U16 to_half(F f) {
-#if defined(JUMPER_IS_NEON)
+#if defined(__aarch64__)
return vcvt_f16_f32(f);
#elif defined(JUMPER_IS_AVX2) || defined(JUMPER_IS_AVX512)