def METHOD_NAME(
    func: PrimFunc,
    features: Dict[str, np.ndarray],
    target: Target,
    dev: Device,
    remote: Optional[RPCSession],
) -> Tuple[float, float, str]:
    """
    Estimate the maximum number of FLOP/s this target/device combo is capable
    of reaching by running a test program. This is a generic function that
    should be overridden for each target.
    Parameters
    ----------
    func : PrimFunc
        Function to estimate peak flops for. Used to check if a specific kind
        intrinsic or dtype could be used with this function.
    features : Dict[str, np.ndarry]
        Features extracted from `func`. Used to check if a specific kind
        intrinsic or dtype could be used with this function.
    target : Target
        Target to run on. This should be as specific to the actual hardware as
        possible to make sure that LLVM generates the best vector code.
    dev : Device
        Device to run on.
    remote : Optional[RPCSession]
      Remote session used to upload artifacts for runtime evaluation. Must be
      the same session used to create `dev`.
    Returns
    -------
    flops : float
        Estimated number of flops used by `func`.
    peak_flops : float
        Approximate sustained FLOP/s of this target/device combo assuming
        vectorized FMA instructions. Each FMA operation counts as two FLOPs.
    name : str
        Dtype/intrinsic used by `func` to achieve peak flops.
    """
    raise NotImplementedError()