def METHOD_NAME(target, expected_impl):
    target = tvm.target.Target(target)
    dtype = "int8"
    out_dtype = "int32"
    data_shape = (2, 2, 4, 8)
    weight_shape = (2, 2, 8, 1)
    data_layout = "NHWC"
    kernel_layout = "HWOI"
    groups = 8
    kernel_size = (2, 2)
    out = relay.nn.conv2d(
        relay.var("data", shape=data_shape, dtype=dtype),
        relay.var("weight", shape=weight_shape, dtype=dtype),
        kernel_size=kernel_size,
        data_layout=data_layout,
        kernel_layout=kernel_layout,
        groups=groups,
        out_dtype=out_dtype,
    )
    out = run_infer_type(out)
    with target:
        impl, _ = relay.backend.te_compiler.select_implementation(
            out.op,
            out.attrs,
            [te.placeholder(data_shape, dtype), te.placeholder(weight_shape, dtype)],
            out.checked_type,
            target,
        )
    assert impl.name == expected_impl