@@ -1014,9 +1014,10 @@ static const char * GGML_OP_NAME[GGML_OP_COUNT] = {
10141014    "OPT_STEP_ADAMW" ,
10151015
10161016    "GLU" ,
1017+     "FFN" ,
10171018};
10181019
1019- static_assert (GGML_OP_COUNT  ==  87 , "GGML_OP_COUNT != 87 " );
1020+ static_assert (GGML_OP_COUNT  ==  88 , "GGML_OP_COUNT != 88 " );
10201021
10211022static  const  char  *  GGML_OP_SYMBOL [GGML_OP_COUNT ] =  {
10221023    "none" ,
@@ -1115,9 +1116,10 @@ static const char * GGML_OP_SYMBOL[GGML_OP_COUNT] = {
11151116    "adamw(x)" ,
11161117
11171118    "glu(x)" ,
1119+     "ffn(x)" ,
11181120};
11191121
1120- static_assert (GGML_OP_COUNT  ==  87 , "GGML_OP_COUNT != 87 " );
1122+ static_assert (GGML_OP_COUNT  ==  88 , "GGML_OP_COUNT != 88 " );
11211123
11221124static_assert (GGML_OP_POOL_COUNT  ==  2 , "GGML_OP_POOL_COUNT != 2" );
11231125
@@ -4958,6 +4960,40 @@ struct ggml_tensor * ggml_flash_attn_back(
49584960    return  result ;
49594961}
49604962
4963+ struct  ggml_tensor  *  ggml_ffn_ext (
4964+         struct  ggml_context  *  ctx ,
4965+         struct  ggml_tensor  *  cur ,
4966+         struct  ggml_tensor  *  up ,
4967+         struct  ggml_tensor  *  up_b ,
4968+         struct  ggml_tensor  *  up_s ,
4969+         struct  ggml_tensor  *  gate ,
4970+         struct  ggml_tensor  *  gate_b ,
4971+         struct  ggml_tensor  *  gate_s ,
4972+         struct  ggml_tensor  *  down ,
4973+         struct  ggml_tensor  *  down_b ,
4974+         struct  ggml_tensor  *  down_s ,
4975+         struct  ggml_tensor  *  act_scales ,
4976+         int       type_op ) {
4977+     int64_t  ne [] =  {10 , 10 , 10 , 10 };
4978+     struct  ggml_tensor  *  result  =  ggml_new_tensor (ctx , GGML_TYPE_F32 , GGML_MAX_DIMS , ne );
4979+ 
4980+     ggml_set_op_params_i32 (result , 0 , type_op );
4981+ 
4982+     result -> op      =  GGML_OP_FFN ;
4983+     result -> src [0 ] =  up ;
4984+     result -> src [1 ] =  up_b ;
4985+     result -> src [2 ] =  up_s ;
4986+     result -> src [3 ] =  gate ;
4987+     result -> src [4 ] =  gate_b ;
4988+     result -> src [5 ] =  gate_s ;
4989+     result -> src [6 ] =  down ;
4990+     result -> src [7 ] =  down_b ;
4991+     result -> src [8 ] =  down_s ;
4992+     result -> src [9 ] =  act_scales ;
4993+ 
4994+     return  result ;
4995+ }
4996+ 
49614997// ggml_ssm_conv 
49624998
49634999struct  ggml_tensor  *  ggml_ssm_conv (
0 commit comments