File tree Expand file tree Collapse file tree 1 file changed +45
-3
lines changed Expand file tree Collapse file tree 1 file changed +45
-3
lines changed Original file line number Diff line number Diff line change @@ -2002,8 +2002,16 @@ static bool ggml_metal_supports_op(const struct ggml_backend_metal_device_contex
20022002 return true ;
20032003 case GGML_OP_MUL_MAT:
20042004 case GGML_OP_MUL_MAT_ID:
2005- return has_simdgroup_reduction &&
2006- (op->src [0 ]->type != GGML_TYPE_F32 || op->src [1 ]->type == GGML_TYPE_F32);
2005+ {
2006+ const enum ggml_type src0_type = op->src [0 ]->type ;
2007+
2008+ if (src0_type == GGML_TYPE_TQ1_0 || src0_type == GGML_TYPE_TQ2_0) {
2009+ return false ;
2010+ }
2011+
2012+ return has_simdgroup_reduction &&
2013+ (src0_type != GGML_TYPE_F32 || op->src [1 ]->type == GGML_TYPE_F32);
2014+ }
20072015 case GGML_OP_CPY:
20082016 case GGML_OP_DUP:
20092017 case GGML_OP_CONT:
@@ -2072,7 +2080,41 @@ static bool ggml_metal_supports_op(const struct ggml_backend_metal_device_contex
20722080 case GGML_OP_DIAG_MASK_INF:
20732081 case GGML_OP_GET_ROWS:
20742082 {
2075- return op->ne [3 ] == 1 ;
2083+ if (op->ne [3 ] != 1 ) {
2084+ return false ;
2085+ }
2086+
2087+ const enum ggml_type src0_type = op->src [0 ]->type ;
2088+
2089+ switch (src0_type) {
2090+ case GGML_TYPE_F32:
2091+ case GGML_TYPE_F16:
2092+ case GGML_TYPE_BF16:
2093+ case GGML_TYPE_Q4_0:
2094+ case GGML_TYPE_Q4_1:
2095+ case GGML_TYPE_Q5_0:
2096+ case GGML_TYPE_Q5_1:
2097+ case GGML_TYPE_Q8_0:
2098+ case GGML_TYPE_MXFP4:
2099+ case GGML_TYPE_Q2_K:
2100+ case GGML_TYPE_Q3_K:
2101+ case GGML_TYPE_Q4_K:
2102+ case GGML_TYPE_Q5_K:
2103+ case GGML_TYPE_Q6_K:
2104+ case GGML_TYPE_IQ2_XXS:
2105+ case GGML_TYPE_IQ2_XS:
2106+ case GGML_TYPE_IQ3_XXS:
2107+ case GGML_TYPE_IQ3_S:
2108+ case GGML_TYPE_IQ2_S:
2109+ case GGML_TYPE_IQ1_S:
2110+ case GGML_TYPE_IQ1_M:
2111+ case GGML_TYPE_IQ4_NL:
2112+ case GGML_TYPE_IQ4_XS:
2113+ case GGML_TYPE_I32:
2114+ return true ;
2115+ default :
2116+ return false ;
2117+ }
20762118 }
20772119 case GGML_OP_SET_ROWS:
20782120 {
You can’t perform that action at this time.
0 commit comments