diff options
author | Brendan Dahl <brendan.dahl@gmail.com> | 2024-08-06 14:15:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-06 14:15:58 -0700 |
commit | 0c269482097ae9da62a690b0ace406e2d2109c48 (patch) | |
tree | d7fa2f2f5b9e7e703dce9805f9dbd1bb16f65cfb /third_party/FP16/include/fp16/macros.h | |
parent | d5a5425c0c76cfc08711b81d6ec70c3a2879e405 (diff) | |
download | binaryen-0c269482097ae9da62a690b0ace406e2d2109c48.tar.gz binaryen-0c269482097ae9da62a690b0ace406e2d2109c48.tar.bz2 binaryen-0c269482097ae9da62a690b0ace406e2d2109c48.zip |
[FP16] Implement load and store instructions. (#6796)
Specified at
https://github.com/WebAssembly/half-precision/blob/main/proposals/half-precision/Overview.md
Diffstat (limited to 'third_party/FP16/include/fp16/macros.h')
-rw-r--r-- | third_party/FP16/include/fp16/macros.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/third_party/FP16/include/fp16/macros.h b/third_party/FP16/include/fp16/macros.h new file mode 100644 index 000000000..4018b0c9d --- /dev/null +++ b/third_party/FP16/include/fp16/macros.h @@ -0,0 +1,46 @@ +#pragma once +#ifndef FP16_MACROS_H +#define FP16_MACROS_H + +#ifndef FP16_USE_NATIVE_CONVERSION + #if (defined(__INTEL_COMPILER) || defined(__GNUC__)) && defined(__F16C__) + #define FP16_USE_NATIVE_CONVERSION 1 + #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) && defined(__AVX2__) + #define FP16_USE_NATIVE_CONVERSION 1 + #elif defined(_MSC_VER) && defined(_M_ARM64) + #define FP16_USE_NATIVE_CONVERSION 1 + #elif defined(__GNUC__) && defined(__aarch64__) + #define FP16_USE_NATIVE_CONVERSION 1 + #endif + #if !defined(FP16_USE_NATIVE_CONVERSION) + #define FP16_USE_NATIVE_CONVERSION 0 + #endif // !defined(FP16_USE_NATIVE_CONVERSION) +#endif // !define(FP16_USE_NATIVE_CONVERSION) + +#ifndef FP16_USE_FLOAT16_TYPE + #if !defined(__clang__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ >= 12) + #if defined(__F16C__) + #define FP16_USE_FLOAT16_TYPE 1 + #endif + #endif + #if !defined(FP16_USE_FLOAT16_TYPE) + #define FP16_USE_FLOAT16_TYPE 0 + #endif // !defined(FP16_USE_FLOAT16_TYPE) +#endif // !defined(FP16_USE_FLOAT16_TYPE) + +#ifndef FP16_USE_FP16_TYPE + #if defined(__clang__) + #if defined(__F16C__) || defined(__aarch64__) + #define FP16_USE_FP16_TYPE 1 + #endif + #elif defined(__GNUC__) + #if defined(__aarch64__) + #define FP16_USE_FP16_TYPE 1 + #endif + #endif + #if !defined(FP16_USE_FP16_TYPE) + #define FP16_USE_FP16_TYPE 0 + #endif // !defined(FP16_USE_FP16_TYPE) +#endif // !defined(FP16_USE_FP16_TYPE) + +#endif /* FP16_MACROS_H */ |