def METHOD_NAME():
    data_dtype = "int32"
    axis = 0
    x_data = np.arange(-32, 32, 1).reshape(1, 64).astype(data_dtype)
    y_data = np.arange(-64, 64, 2).reshape(1, 64).astype(data_dtype)
    x_scale = relay.const((62 + 64) / (np.power(2, 32) - 1.0), "float32")
    y_scale = relay.const((62 + 64) / (np.power(2, 32) - 1.0), "float32")
    x_zero_point = relay.const(0, "int32")
    y_zero_point = relay.const(1, "int32")
    x = relay.var("x", shape=(1, 64), dtype=data_dtype)
    y = relay.var("y", shape=(1, 64), dtype=data_dtype)
    z = relay.qnn.op.concatenate(
        (x, y),
        input_scales=(x_scale, y_scale),
        input_zero_points=(x_zero_point, y_zero_point),
        output_scale=y_scale,
        output_zero_point=relay.const(1, "int32"),
        axis=axis,
    )
    func = relay.Function([x, y], z)
    mod = tvm.IRModule.from_expr(func)
    mod = relay.transform.InferType()(mod)
    mod = relay.qnn.transform.CanonicalizeOps()(mod)
    func = mod["main"]
    golden_output = np.concatenate((x_data + 1, y_data), axis=axis)
    op_res = relay.create_executor("graph", device=tvm.cpu(0), target="llvm").evaluate(func)(
        x_data, y_data
    )
    np.testing.assert_equal(op_res.numpy(), golden_output)