From: katsu560 Date: Tue, 6 Dec 2022 18:32:48 +0000 (+0900) Subject: add fp16/fp32 convert intrinsics X-Git-Tag: upstream/1.7.4~1756 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=35b40a93b94b421250110881a4dcc5e3f1897305;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp add fp16/fp32 convert intrinsics --- 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