summaryrefslogtreecommitdiff
path: root/third_party/FP16/include/fp16/macros.h
diff options
context:
space:
mode:
authorBrendan Dahl <brendan.dahl@gmail.com>2024-08-06 14:15:58 -0700
committerGitHub <noreply@github.com>2024-08-06 14:15:58 -0700
commit0c269482097ae9da62a690b0ace406e2d2109c48 (patch)
treed7fa2f2f5b9e7e703dce9805f9dbd1bb16f65cfb /third_party/FP16/include/fp16/macros.h
parentd5a5425c0c76cfc08711b81d6ec70c3a2879e405 (diff)
downloadbinaryen-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.h46
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 */