Commit d1578a0c authored by Michael R. Crusoe's avatar Michael R. Crusoe Committed by Michael R. Crusoe

simde_float16: prefer __fp16 if available

Fixes: https://github.com/simd-everywhere/simde/issues/1104
parent 064b8049
...@@ -33,6 +33,11 @@ HEDLEY_DIAGNOSTIC_PUSH ...@@ -33,6 +33,11 @@ HEDLEY_DIAGNOSTIC_PUSH
SIMDE_DISABLE_UNWANTED_DIAGNOSTICS SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
SIMDE_BEGIN_DECLS_ SIMDE_BEGIN_DECLS_
#if defined(__clang__) && SIMDE_FLOAT16_API == SIMDE_FLOAT16_API_FP16
SIMDE_DIAGNOSTIC_DISABLE_DOUBLE_PROMOTION_
_Pragma("clang diagnostic ignored \"-Wimplicit-float-conversion\"")
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_float16x4_t simde_vcadd_rot270_f16(simde_float16x4_t a, simde_float16x4_t b) simde_float16x4_t simde_vcadd_rot270_f16(simde_float16x4_t a, simde_float16x4_t b)
{ {
......
...@@ -33,6 +33,11 @@ HEDLEY_DIAGNOSTIC_PUSH ...@@ -33,6 +33,11 @@ HEDLEY_DIAGNOSTIC_PUSH
SIMDE_DISABLE_UNWANTED_DIAGNOSTICS SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
SIMDE_BEGIN_DECLS_ SIMDE_BEGIN_DECLS_
#if defined(__clang__) && SIMDE_FLOAT16_API == SIMDE_FLOAT16_API_FP16
SIMDE_DIAGNOSTIC_DISABLE_DOUBLE_PROMOTION_
_Pragma("clang diagnostic ignored \"-Wimplicit-float-conversion\"")
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_float16x4_t simde_vcadd_rot90_f16(simde_float16x4_t a, simde_float16x4_t b) simde_float16x4_t simde_vcadd_rot90_f16(simde_float16x4_t a, simde_float16x4_t b)
{ {
......
...@@ -65,7 +65,9 @@ SIMDE_BEGIN_DECLS_ ...@@ -65,7 +65,9 @@ SIMDE_BEGIN_DECLS_
* any ideas on how to improve it. If you do, patches are definitely * any ideas on how to improve it. If you do, patches are definitely
* welcome. */ * welcome. */
#if !defined(SIMDE_FLOAT16_API) #if !defined(SIMDE_FLOAT16_API)
#if !defined(__EMSCRIPTEN__) && !(defined(__clang__) && defined(SIMDE_ARCH_POWER)) && \ #if defined(__ARM_FP16_FORMAT_IEEE) && (defined(SIMDE_ARM_NEON_FP16) || defined(__ARM_FP16_ARGS))
#define SIMDE_FLOAT16_API SIMDE_FLOAT16_API_FP16
#elif !defined(__EMSCRIPTEN__) && !(defined(__clang__) && defined(SIMDE_ARCH_POWER)) && \
!(defined(HEDLEY_MSVC_VERSION) && defined(__clang__)) && \ !(defined(HEDLEY_MSVC_VERSION) && defined(__clang__)) && \
!(defined(__clang__) && defined(SIMDE_ARCH_RISCV64)) && ( \ !(defined(__clang__) && defined(SIMDE_ARCH_RISCV64)) && ( \
defined(SIMDE_X86_AVX512FP16_NATIVE) || \ defined(SIMDE_X86_AVX512FP16_NATIVE) || \
...@@ -79,8 +81,6 @@ SIMDE_BEGIN_DECLS_ ...@@ -79,8 +81,6 @@ SIMDE_BEGIN_DECLS_
* clang will define the constants even if _Float16 is not * clang will define the constants even if _Float16 is not
* supported. Ideas welcome. */ * supported. Ideas welcome. */
#define SIMDE_FLOAT16_API SIMDE_FLOAT16_API_FLOAT16 #define SIMDE_FLOAT16_API SIMDE_FLOAT16_API_FLOAT16
#elif defined(__ARM_FP16_FORMAT_IEEE) && (defined(SIMDE_ARM_NEON_FP16) || defined(__ARM_FP16_ARGS))
#define SIMDE_FLOAT16_API SIMDE_FLOAT16_API_FP16
#elif defined(__FLT16_MIN__) && \ #elif defined(__FLT16_MIN__) && \
(defined(__clang__) && \ (defined(__clang__) && \
(!defined(SIMDE_ARCH_AARCH64) || SIMDE_DETECT_CLANG_VERSION_CHECK(7,0,0)) \ (!defined(SIMDE_ARCH_AARCH64) || SIMDE_DETECT_CLANG_VERSION_CHECK(7,0,0)) \
......
...@@ -38,6 +38,10 @@ HEDLEY_DIAGNOSTIC_PUSH ...@@ -38,6 +38,10 @@ HEDLEY_DIAGNOSTIC_PUSH
SIMDE_DISABLE_UNWANTED_DIAGNOSTICS SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
SIMDE_BEGIN_DECLS_ SIMDE_BEGIN_DECLS_
#if defined(__clang__) && SIMDE_FLOAT16_API == SIMDE_FLOAT16_API_FP16
SIMDE_DIAGNOSTIC_DISABLE_DOUBLE_PROMOTION_
#endif
SIMDE_HUGE_FUNCTION_ATTRIBUTES SIMDE_HUGE_FUNCTION_ATTRIBUTES
simde__mmask64 simde__mmask64
simde_mm512_cmp_epi8_mask (simde__m512i a, simde__m512i b, const int imm8) simde_mm512_cmp_epi8_mask (simde__m512i a, simde__m512i b, const int imm8)
......
...@@ -33,6 +33,10 @@ HEDLEY_DIAGNOSTIC_PUSH ...@@ -33,6 +33,10 @@ HEDLEY_DIAGNOSTIC_PUSH
SIMDE_DISABLE_UNWANTED_DIAGNOSTICS SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
SIMDE_BEGIN_DECLS_ SIMDE_BEGIN_DECLS_
#if defined(__clang__) && SIMDE_FLOAT16_API == SIMDE_FLOAT16_API_FP16
SIMDE_DIAGNOSTIC_DISABLE_DOUBLE_PROMOTION_
#endif
SIMDE_FUNCTION_ATTRIBUTES SIMDE_FUNCTION_ATTRIBUTES
simde_float16 simde_float16
simde_mm512_reduce_max_ph(simde__m512h a) { simde_mm512_reduce_max_ph(simde__m512h a) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment