def METHOD_NAME(call_node: "relay.Call", mixed_precision_type: str) -> List[str]:
    """A function which returns output dtypes in a way which works for most ops.
    Parameters
    ---------
    call_node: relay.Call
        The call node containing the op.
    mixed_precision_type: str
        The target type to run the operation in.
    Returns
    -------
    output_dtypes : [str, str]
        A list of two strings. The first represents the datatype used for accumulation
        in the operation. The second represents the actual output datatype.
    """
    # Assume support accumulation dtypes <---> has out_dtype attr.
    # This is because there is no better way right now to tell which ops support accumulating
    # at different data types.
    # Some discussion here about making this better is here:
    # https://discuss.tvm.apache.org/t/rfc-relay-fp32-fp16-model-support/9994/4?u=andrewzhaoluo
    if hasattr(call_node.attrs, "out_dtype"):
        # TODO (AndrewZhaoLuo): evaluate consistent support for mixed_type accumulators
        # return ["float32", mixed_precision_type]
        return [mixed_precision_type, mixed_precision_type]
    # [accumulation_dtype, output_dtype] for the operations
    return [mixed_precision_type, mixed_precision_type]