[Frontend][ONNX] Add MatMulInteger support to Relax ONNX frontend by OmarAzizi · Pull Request #18951 · apache/tvm
…er, add per-channel zp tests Changes based on reviewer feedback: - Replace dim.value shape extraction with relax.op.expand_dims for zero-point reshaping, which is safe for symbolic/dynamic shapes unlike extracting concrete dimension values via struct_info.shape - Fix _make_matmulinteger_model helper: zero-points were incorrectly added to both graph_inputs and initializers, causing duplicate Relax variable names and malformed IR. Now added as initializers only. - Fix node_inputs placeholder logic: empty string for absent a_zero_point is now only appended when b_zero_point is present, avoiding a spurious 3-input node when both zero-points are absent. - Add test_matmulinteger_per_channel_zp: verifies 1-D per-row a_zero_point [M] and per-col b_zero_point [N], exercising the expand_dims path in the converter. Runs TVM-only against a NumPy reference since ORT CPU does not support per-row a_zero_point despite the ONNX spec allowing it. - Add test_matmulinteger_per_channel_zp_ort_limitation: xfail test that documents the ORT CPU kernel limitation (strict=True so we are alerted if ORT ever fixes this). - Mark int8/uint8 mixed dtype test as xfail(strict=False) since some older ORT versions do not implement this combination, but newer versions do. Signed-off-by: OmarAzizi <oalazizi75@gmail.com>