CallNode is not considered in qnn.concatenate

An error occurs when we dispatch qnn.concatenate to host for a pre-quantized TFLite model: input scale cannot be extracted

File "/home/aquapapaya/workshop/repo/tvm0807/incubator-tvm/src/relay/qnn/op/concatenate.cc", line 163
File "/home/aquapapaya/workshop/repo/tvm0807/incubator-tvm/src/relay/qnn/op/concatenate.cc", line 163
      TVMError: Check failed: tuple_input_scales != nullptr: 

We find that TVM does not consider CallNode when extracting input scale and zero point in QNN concatenate operator canonicalization, and only TupleNode is handled.

We add the following codes to consider CallNode:

auto tuple_input_scales_in_call_node = input_scales.as<CallNode>()->args;
auto tuple_input_scales = tuple_input_scales_in_call_node[0].as<TupleNode>();
CHECK(tuple_input_scales != nullptr);

auto tuple_input_zero_points_in_call_node = input_zero_points.as<CallNode>()->args;
auto tuple_input_zero_points = tuple_input_zero_points_in_call_node[0].as<TupleNode>();
CHECK(tuple_input_zero_points != nullptr);

A modified concatenate.cc is provided to fix the problem. Please copy it to src/relay/qnn/op, re-build TVM, and then we can get input scale and zero point of CallNode. The test files can be found in the repo.