| def _sanitize_constexpr_value(value): |
| if value is None: |
| return "NONE" |
| if isinstance(value, bool): |
| return str(int(value)) |
| if isinstance(value, int): |
| return str(value) |
| if isinstance(value, float): |
| if value.is_integer(): |
| return str(int(value)) |
| return str(value) |
|
|
| |
| if isinstance(value, (list, tuple, set)): |
| items = sorted(value, key=str) if isinstance(value, set) else value |
| sanitized_items = [_sanitize_constexpr_value(item) for item in items] |
| joined = "_".join(sanitized_items) |
| return joined if joined else "NONE" |
|
|
| if isinstance(value, str): |
| cleaned_value = "".join(ch if ch.isalnum() else "_" for ch in value).strip("_") |
| return cleaned_value.upper() if cleaned_value else "NONE" |
|
|
| cleaned_value = "".join(ch if ch.isalnum() else "_" for ch in str(value)).strip("_") |
| return cleaned_value.upper() if cleaned_value else "NONE" |
|
|
|
|
| def make_kernel_repr(base_name, config_keys, name_key=None): |
| |
| |
| |
| def _repr(specialization): |
| constants = specialization.constants |
|
|
| name = base_name |
| if name_key is not None: |
| override = constants.get(name_key, None) |
| if override: |
| cleaned = "".join( |
| ch if ch.isalnum() or ch == "_" else "_" for ch in str(override) |
| ) |
| if cleaned: |
| name = cleaned |
|
|
| name_parts = [] |
| for key in config_keys: |
| value = constants.get(key, None) |
| symbol = _sanitize_constexpr_value(value) |
| name_parts.append(f"{key}_{symbol}") |
|
|
| if not name_parts: |
| return name |
|
|
| suffix = "_".join(name_parts) |
| return f"{name}_{suffix}" |
|
|
| return _repr |
|
|