]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
add fp16/fp32 convert intrinsics
authorkatsu560 <redacted>
Tue, 6 Dec 2022 18:32:48 +0000 (03:32 +0900)
committerGeorgi Gerganov <redacted>
Tue, 6 Dec 2022 19:44:24 +0000 (21:44 +0200)
ggml.c

diff --git a/ggml.c b/ggml.c
index b6d528d9fd6dd414351808cb648c5a774b95c70e..67e1977b1680125e2ade58bbd9200e0f786b2a7b 100644 (file)
--- a/ggml.c
+++ b/ggml.c
@@ -131,6 +131,16 @@ ggml_fp16_t ggml_fp32_to_fp16(float x) {
 // FP16 <-> FP32
 // ref: https://github.com/Maratyszcza/FP16
 
+#ifdef __F16C__
+float ggml_fp16_to_fp32(ggml_fp16_t h) {
+    return _cvtsh_ss(h);
+}
+ggml_fp16_t ggml_fp32_to_fp16(float f) {
+    return _cvtss_sh(f, 0);
+}
+
+#else
+
 static inline float fp32_from_bits(uint32_t w) {
     union {
         uint32_t as_bits;
@@ -196,6 +206,7 @@ ggml_fp16_t ggml_fp32_to_fp16(float f) {
     return (sign >> 16) | (shl1_w > UINT32_C(0xFF000000) ? UINT16_C(0x7E00) : nonsign);
 }
 #endif
+#endif
 
 //
 // global data