// Match [u]int##_t naming scheme so rvv-inl.h macros can obtain the type name
// by concatenating base type and bits.
-#if HWY_ARCH_ARM && (__ARM_FP & 2)
+// Avoid __ARM_FP build error
+#if HWY_ARCH_ARM && (__ARM_FP & 2) && !(__TIZEN__)
#define HWY_NATIVE_FLOAT16 1
#else
#define HWY_NATIVE_FLOAT16 0
#if defined(HWY_EMULATE_SVE)
using float16_t = FarmFloat16;
#elif HWY_NATIVE_FLOAT16
-// Avoid "'__fp16' and '_Float16' not declared" build error
-#if defined(__TIZEN__)
-struct float16_t {
- uint16_t bits;
-};
-#else
using float16_t = __fp16;
// Clang does not allow __fp16 arguments, but scalar.h requires LaneType
// arguments, so use a wrapper.
// TODO(janwas): replace with _Float16 when that is supported?
-#endif
#else
struct float16_t {
uint16_t bits;
return Vec128<int64_t, N>(vget_low_s64(vmovl_s32(v.raw)));
}
-#if __ARM_FP & 2
+// Avoid __ARM_FP build error
+#if (__ARM_FP & 2) && !(__TIZEN__)
HWY_API Vec128<float> PromoteTo(Full128<float> /* tag */,
const Vec128<float16_t, 4> v) {
return Vec128<int8_t, N>(vqmovn_s16(vcombine_s16(v.raw, v.raw)));
}
-#if __ARM_FP & 2
+// Avoid __ARM_FP build error
+#if (__ARM_FP & 2) && !(__TIZEN__)
HWY_API Vec128<float16_t, 4> DemoteTo(Simd<float16_t, 4> /* tag */,
const Vec128<float> v) {