def make_bmm_exec_key(op_keys: str) -> str:
    """make exec_key for bmm-family ops based on the given op_keys string

    Parameters
    ----------
    op_keys: str
        op_keys used to make the exec_key, e.g. 2x3x4x5

    Returns
    ----------
    str
        exec_key
    """
    if ";" in op_keys:
        raise RuntimeError("invalid op_keys for bmm: '{}'".format(op_keys))

    values = [int(v) for v in op_keys.split("x")]
    if len(values) != 4:
        raise RuntimeError("invalid op_keys for bmm: '{}'".format(op_keys))

    name_values = [
        ("B", values[0]),
        ("M", values[1]),
        ("N", values[2]),
        ("K", values[3]),
    ]
    return " && ".join(["{} == {}".format(n, v) for n, v in name_values])
make exec_key for bmm-family ops based on the given op_keys string

    Parameters
    ----------
    op_keys: str
        op_keys used to make the exec_key, e.g. 2x3x4x5

    Returns
    ----------
    str
        exec_key
    
tests/ci_profile_cache/update_cache.py