code: def _generate_qlinear_weight_prepack_patterns(
      dtype=torch.float32,
      input_dim_exceeds_two=False,
      input_contiguous=True,
      with_bias=False,
  ):
      if input_dim_exceeds_two and not input_contiguous:
          return _generate_dequant_bmm_node_pattern(
              dequantize_per_channel_weight_pattern,
              dtype,
              with_bias,
          )
      else:
          return _generate_dequant_linear_node_pattern(
              dequantize_per_channel_weight_pattern,
              dtype,
              input_dim_exceeds_two,
          )
  
imports: import copy
  import functools
  import itertools
  import math
  import operator
  from typing import Any, Tuple
  import torch
  from torch._dynamo.utils import counters
  from torch.fx.experimental.symbolic_shapes import has_free_symbols
  from ..lowering import lowerings, require_channels_last
  from ..pattern_matcher import Arg, CallFunction, filter_nodes, KeywordArg, ListOf, Match
  from ..utils import pad_listlike
  from .freezing_patterns import register_freezing_graph_pattern
  from .post_grad import register_lowering_pattern
label_desc: Use image node_id 37 for calling a global function with example usage: _generate_qlinear_weight_prepack_patterns(dtype, input_dim_exceeds_two, input_contiguous, with_bias) and returns: _generate_dequant_bmm_node_pattern, _generate_dequant_linear_node_pattern