def map_set(
    map_name: str,
    key_name: str,
    value_name: Optional[str] = None,
    indent: str = "    ",
) -> str:
    """Generate a string setting a value in a map.

    If value name is given, sets map_name["key_name"] = value_name. Else, sets
    map_name["key_name"] = key_name. Special maps like dim_map may make
    additional modificiations to the LHS of this expression.

    Parameters
    ----------
    map_name : str
        The map to use
    key_name : str
        The key to set. Will be put into quotes.
    value_name : Optional[str]
        If set, force map_name["key_name"] = value_name
    indent : str
        For formatting

    Returns
    -------
    str
        The formatted map set statement.
    """
    if value_name is not None:
        value = value_name
    else:
        value = key_name
        if map_name == "dim_map":
            # Because ROCM backend uses int64_t while CUDA uses int,
            # this is a temporary workaround to cast int64_t* to int*.
            # FIXME: After we unified the two backends,
            # reinterpret_cast<int *> should be removed.
            value = f"reinterpret_cast<int64_t *>(&{value})"

    return f'{indent}{map_name}["{key_name}"] = {value};'
Generate a string setting a value in a map.

If value name is given, sets map_name["key_name"] = value_name. Else, sets
map_name["key_name"] = key_name. Special maps like dim_map may make
additional modificiations to the LHS of this expression.

Parameters
----------
map_name : str
The map to use
key_name : str
The key to set. Will be put into quotes.
value_name : Optional[str]
If set, force map_name["key_name"] = value_name
indent : str
For formatting

Returns
-------
str
The formatted map set statement.
python/aitemplate/backend/codegen.py