def METHOD_NAME():
    # Compile simulated quantize once but support either per-channel or scalar params.
    data = np.random.uniform(low=-64, high=64, size=[2, 5]).astype("int8")
    data_fp = data.astype("float32")
    # Test scalar qnn params.
    scale_np = np.asarray([0.5]).astype("float32")
    zp_np = np.asarray([0]).astype("int32")
    dtype_np = np.int32(SQNN_DTYPE_TO_CODE["int8"])
    quant_args = {"in_zero_point": zp_np[0], "in_scale": scale_np[0]}
    dq_out = dequantize_test_driver(
        in_dtype="int8",
        quant_args=quant_args,
        axis=0,
        in_data=data,
    )
    # Create variables with undefined shape and run with scalar inputs.
    input_data = relay.var("input_data", shape=data.shape, dtype="float32")
    scale = relay.var("scale", shape=[relay.Any()], dtype="float32")
    zp = relay.var("zp", shape=[relay.Any()], dtype="int32")
    dtype = relay.var("dtype", shape=[], dtype="int32")
    vm = build_simulated_dequantize(input_data, scale, zp, dtype, axis=0)
    sim_dq_out = vm.invoke("main", input_data=data_fp, scale=scale_np, zp=zp_np, dtype=dtype_np)
    np.testing.assert_allclose(sim_dq_out.numpy(), dq_out, rtol=1e-5)
    # Now get the perchannel quantize output and compare without recompiling.
    scale_np = np.array([0.5, 0.25]).astype("float32")
    zp_np = np.array([127, 123]).astype("int32")
    # Get the reference quantize output.
    quant_args = {"in_zero_point": zp_np, "in_scale": scale_np}
    dq_out = dequantize_test_driver(
        in_dtype="int8",
        quant_args=quant_args,
        axis=0,
        in_data=data,
    )
    # Run the simulated quantize without recompiling and confirm results match.
    sim_dq_out = vm.invoke("main", input_data=data_fp, scale=scale_np, zp=zp_np, dtype=dtype_np)
    np.testing.assert_allclose(sim_dq_out.numpy(), dq_out, rtol=1e-5)