summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h
index 639a288cd8d..112a4442216 100644
--- a/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h
+++ b/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h
@@ -978,10 +978,13 @@ SI F approx_powf(F x, F y) {
SI F from_half(U16 h) {
#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
&& !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+#if defined(SK_BUILD_FOR_MAC)
+ return vcvt_f32_f16(h);
+#else
__fp16 fp16;
memcpy(&fp16, &h, sizeof(U16));
return float(fp16);
-
+#endif
#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_SKX)
return _mm256_cvtph_ps(h);
@@ -1001,11 +1004,14 @@ SI F from_half(U16 h) {
SI U16 to_half(F f) {
#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
&& !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+#if defined(SK_BUILD_FOR_MAC)
+ return vcvt_f16_f32(f);
+#else
__fp16 fp16 = __fp16(f);
U16 u16;
memcpy(&u16, &fp16, sizeof(U16));
return u16;
-
+#endif
#elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_SKX)
return _mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION);