code: def test_fused_int_mm_mul(self):
      def fn1(a, b, c):
          return (
              out_dtype(torch.ops.aten.mm.default, torch.int32, a, b)
              * c
          )
  
      def fn2(a, b, c):
          return (
              out_dtype(torch.ops.aten.mm.default, torch.int32, a, b)
              * c
          ).to(torch.bfloat16)
  
      args_list = [
          (
              torch.randint(
                  -128, 127, (32, 32), dtype=torch.int8, device="cuda"
              ),
              torch.randint(
                  -128, 127, (32, 8), dtype=torch.int8, device="cuda"
              ),
              torch.randn((32, 1), dtype=torch.float16, device="cuda")
              * 0
              + 0.5,
          ),
          (
              torch.randint(
                  -128, 127, (32, 32), dtype=torch.int8, device="cuda"
              ),
              torch.randint(
                  -128, 127, (32, 8), dtype=torch.int8, device="cuda"
              ),
              torch.randn((1, 8), dtype=torch.bfloat16, device="cuda"),
          ),
          (
              torch.randint(
                  -128, 127, (32, 32), dtype=torch.int8, device="cuda"
              ),
              torch.randint(
                  -128, 127, (32, 8), dtype=torch.int8, device="cuda"
              ),
              torch.randn((1, 8), dtype=torch.float32, device="cuda"),
          ),
      ]
  
      for args in args_list:
          self._test_fused_int_mm_mul_impl(fn1, args, True)
          self._test_fused_int_mm_mul_impl(fn2, args, True)
  
imports: import copy
  import unittest
  import torch
  import torch._dynamo.config
  import torch._inductor.config
  from torch._dynamo.test_case import run_tests, TestCase
  from torch._dynamo.utils import count_calls, counters
  from torch._higher_order_ops.out_dtype import out_dtype
  from torch._inductor.fx_passes import joint_graph
  from torch._inductor.fx_passes.serialized_patterns.central_index import get_serialized_pattern
  from torch._inductor.pattern_matcher import _TargetExpr, Arg, CallFunction, gen_pattern, KeywordArg, Match, PatternExpr, PatternMatcherPass, PatternPrettyPrinter, register_graph_pattern, stable_topological_sort
  from torch._inductor.utils import run_and_get_code
  from torch._inductor.virtualized import V
  from torch.testing import FileCheck
  from torch.testing._internal.common_cuda import SM80OrLater
  from torch.testing._internal.common_utils import IS_LINUX, skipIfRocm
  from torch.testing._internal.inductor_utils import HAS_CUDA
label_desc: Use image node_id 4 for calling the TestPatternMatcher obj's underlying member method code with example usage: obj.test_fused_int_mm_mul() and returns: unknown, unknown