class_docstr: TestElementWise
code: def test_param_shapes(
      self, ir_module, transformed_input_shape, transformed_output_shape
  ):
      func = ir_module["main"]
      primfunc_input_shape, primfunc_output_shape = [
          list(func.buffer_map[param].shape) for param in func.params
      ]
      assert primfunc_input_shape == transformed_input_shape
      assert primfunc_output_shape == transformed_output_shape
  
imports: import contextlib
  import numpy
  import pytest
  import tvm
  import tvm.contrib.hexagon
  import tvm.testing
  from tvm import te
  from tvm.contrib.hexagon.pytest_plugin import requires_hexagon_toolchain
  from tvm.tir.stmt_functor import post_order_visit
  from tvm.contrib.hexagon import allocate_hexagon_array
  from .infrastructure import get_hexagon_target
label_desc: Use image node_id 9 for calling the TestElementWise obj's underlying member method code with example usage: obj.test_param_shapes(ir_module, transformed_input_shape, transformed_output_shape) without return types