def gen_function_call(func_attrs: Dict[str, Any], indent="  ") -> str:
    """
    Parameters
    ----------
    func_attrs : dict
        Attributes from Operator
    indent : str, optional
        Indentation for function call template, by default "  "

    Returns
    -------
    str
        Driver code for invoking call
    """

    x = func_attrs["inputs"][0]
    xshape = x._attrs["shape"]
    input_dims = [f"&{dim._attrs['name']}" for dim in xshape]

    y = func_attrs["outputs"][0]

    return FUNC_CALL_TEMPLATE.render(
        func_name=func_attrs["name"],
        dst=y._attrs["name"],
        src=x._attrs["name"],
        input_dims=input_dims,
        permutation="{" + ",".join(str(dim) for dim in func_attrs["dims"]) + "}",
        indent=indent,
    )

    Parameters
    ----------
    func_attrs : dict
        Attributes from Operator
    indent : str, optional
        Indentation for function call template, by default "  "

    Returns
    -------
    str
        Driver code for invoking call
    
python/aitemplate/backend/cuda/tensor/permute.py