code: def test_dense(dim_m, dim_k, dim_n):
      """Test a subgraph with a single dense operator."""
      ishape = (dim_m, dim_k)
      wshape = (dim_n, dim_k)
  
      input0 = relay.var("input", relay.TensorType(ishape, "int8"))
      dense_f = relay.op.nn.batch_flatten(input0)
      weight0 = relay.const(
          np.random.randint(low=-10, high=10, size=wshape, dtype="int8")
      )
      out = relay.op.nn.dense(dense_f, weight0, out_dtype="int32")
  
      mod = tvm.IRModule.from_expr(relay.Function([input0], out))
      inputs = {
          "input": np.random.randint(
              low=-128, high=127, size=ishape, dtype="int8"
          )
      }
      output_list = generate_ref_data(mod, inputs)
  
      compile_and_run(
          AOTTestModel(module=mod, inputs=inputs, outputs=output_list),
          runner=AOT_CORSTONE300_RUNNER,
          interface_api="c",
          use_unpacked_api=True,
          target_opts={
              "-keys": "arm_cpu",
              "-mcpu": "cortex-m7",
          },
      )
  
file_path: tvm/tests/python/integration/test_arm_mprofile_dsp.py
imports: import numpy
  import pytest
  import tvm
  import tvm.testing
  from tvm import relay
  from tvm.testing.aot import AOTTestModel, compile_and_run, generate_ref_data
  from tvm.micro.testing.aot_test_utils import AOT_CORSTONE300_RUNNER
label_desc: Use image node_id 3 for calling a global function with example usage: test_dense(dim_m, dim_k, dim_n) without return types