def test_relu(dtype):
    trials = [
        ((1, 4, 4, 4), 65, 178, "uint8"),
        ((1, 8, 4, 2), 1, 254, "uint8"),
        ((1, 16), 12, 76, "uint8"),
        ((1, 4, 4, 4), 65, 125, "int8"),
        ((1, 8, 4, 2), -100, 100, "int8"),
        ((1, 16), -120, -20, "int8"),
    ]

    np.random.seed(0)
    for shape, a_min, a_max, trial_dtype in trials:
        if trial_dtype == dtype:
            inputs = {
                "a": tvm.nd.array(
                    np.random.randint(
                        low=np.iinfo(dtype).min,
                        high=np.iinfo(dtype).max + 1,
                        size=shape,
                        dtype=dtype,
                    )
                ),
            }
            outputs = []
            for npu in [False, True]:
                model = _get_model(inputs["a"].shape, dtype, a_min, a_max)
                mod = tei.make_module(model, {})
                outputs.append(tei.build_and_run(mod, inputs, 1, {}, npu=npu))

            tei.verify(outputs, dtype, 1)