pub fn should_use_f16(op_type: &str) -> bool {
matches!(
op_type,
"Add"
| "Sub"
| "Mul"
| "Div"
| "Relu"
| "LeakyRelu"
| "Sigmoid"
| "Tanh"
| "Gelu"
| "Silu"
| "SiLU"
| "HardSigmoid"
| "HardSwish"
| "Abs"
| "Neg"
| "Sqrt"
| "Reciprocal"
| "Clip"
| "Erf"
| "Softsign"
| "Softplus"
| "Mish"
| "Celu"
| "Elu"
| "Selu"
| "ThresholdedRelu"
| "PRelu"
| "LayerNormalization"
| "LayerNorm"
| "BatchNormalization"
| "BatchNorm"
| "GroupNormalization"
| "GroupNorm"
| "RMSNorm"
| "SimplifiedLayerNormalization"
| "InstanceNorm"
| "InstanceNormalization"
| "Softmax"
| "LogSoftmax"
| "Transpose"
| "Reshape"
| "Concat"
| "Slice"
| "Split"
| "Squeeze"
| "Unsqueeze"
| "Flatten"
| "Identity"
| "Expand"
| "Tile"
| "DepthToSpace"
| "SpaceToDepth"
| "Attention"
| "MultiHeadAttention"
| "RotaryEmbedding"
| "Dropout"
)
}
pub fn requires_f32(op_type: &str) -> bool {
matches!(
op_type,
"MatMul"
| "Gemm"
| "ReduceSum"
| "ReduceMean"
| "ReduceMax"
| "ReduceMin"
| "ReduceProd"
| "ReduceL1"
| "ReduceL2"
| "ReduceLogSum"
| "ReduceLogSumExp"
| "ReduceSumSquare"
| "Pow"
| "Exp"
| "Log"
| "Conv"
| "ConvTranspose"
| "ConvAddRelu"
| "MaxPool"
| "AveragePool"
| "GlobalAveragePool"
| "GlobalMaxPool"
| "CumSum"
| "Einsum"
)
}