From: Georgi Gerganov Date: Tue, 14 Apr 2026 14:32:29 +0000 (+0300) Subject: metal : fix FA support logic (#21898) X-Git-Tag: upstream/0.0.10438~1643 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=c0de6eda72e66f728e921dc0fac2ad4824f349ea;p=pkg%2Fggml%2Fsources%2Fllama.cpp metal : fix FA support logic (#21898) --- diff --git a/ggml/src/ggml-metal/ggml-metal-device.m b/ggml/src/ggml-metal/ggml-metal-device.m index 4c192da65..effe666a6 100644 --- a/ggml/src/ggml-metal/ggml-metal-device.m +++ b/ggml/src/ggml-metal/ggml-metal-device.m @@ -1160,6 +1160,23 @@ bool ggml_metal_device_supports_op(ggml_metal_device_t dev, const struct ggml_te if (op->src[1]->type != op->src[2]->type) { return false; } + switch (op->src[1]->type) { + case GGML_TYPE_F32: + case GGML_TYPE_F16: + case GGML_TYPE_Q8_0: + case GGML_TYPE_Q4_0: + case GGML_TYPE_Q4_1: + case GGML_TYPE_Q5_0: + case GGML_TYPE_Q5_1: + break; + case GGML_TYPE_BF16: + if (!has_bfloat) { + return false; + } + break; + default: + return false; + } return has_simdgroup_mm; // TODO: over-restricted for vec-kernels case GGML_OP_SSM_CONV: case GGML_OP_SSM_SCAN: