From 35b40a93b94b421250110881a4dcc5e3f1897305 Mon Sep 17 00:00:00 2001 From: katsu560 Date: Wed, 7 Dec 2022 03:32:48 +0900 Subject: [PATCH] add fp16/fp32 convert intrinsics --- ggml.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ggml.c b/ggml.c index b6d528d9..67e1977b 100644 --- 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