def METHOD_NAME(hexagon_session, operations, expected, sch):
    """Evalute schedule."""
    shape = operations
    dtype = "float64"
    func_tir = tvm.build(sch.mod["main"], target=get_hexagon_target("v68"))
    module = hexagon_session.load_module(func_tir)
    # np.random.random returns float64 by default, but make the cast explicit
    # to make it easier to switch when necessary.
    a = np.random.random(shape).astype(dtype)
    b = np.random.random(shape).astype(dtype)
    c = np.zeros(shape, dtype=dtype)
    a_hexagon = tvm.runtime.ndarray.array(a, device=hexagon_session.device)
    b_hexagon = tvm.runtime.ndarray.array(b, device=hexagon_session.device)
    c_hexagon = tvm.runtime.ndarray.array(c, device=hexagon_session.device)
    # These are reduced for CI but number=100 and repeat=10 does a good job of removing noise.
    number = 1
    repeat = 1
    timer = module.time_evaluator(
        "__tvm_main__", hexagon_session.device, number=number, repeat=repeat
    )
    runtime = timer(a_hexagon, b_hexagon, c_hexagon)
    tvm.testing.assert_allclose(c_hexagon.asnumpy(), expected(a, b))
    return round(runtime.mean * 1000, 6)