docstr: Perform constant folding conversion, from original mod to split constant
  folding module with two split subgraphs, where there are two attrs to
  fold into a single output, and there are three placeholder inputs.
  
  attr1   attr2         attr1   attr2
      \   /                 \   /
   x   add                   add
    \ /                       |
    sub     y               output     (becomes attr add_1)
       \   /     ==>   -------+------- (const/base subgraph split)
        mul  z           x   /         (input from previous subgraph
          \ /             \ /           is attr)
          div              sub  y
           |                 \ /
         output              mul  z
                               \ /
                               div
                                |
                              output
docstr_tok: ["Perform","constant","folding","conversion",",","from","original","mod","to","split","constant","folding","module","with","two","split","subgraphs",",","where","there","are","two","attrs","to","fold","into","a","single","output",",","and","there","are","three","placeholder","inputs",".","attr1","attr2","attr1","attr2","\\","\/","\\","\/","x","add","add","\\","\/","|","sub","y","output","(","becomes","attr","add_1",")","\\","\/","==",">","--","--","--","-+","--","--","--","-","(","const\/base","subgraph","split",")","mul","z","x","\/","(","input","from","previous","subgraph","\\","\/","\\","\/","is","attr",")","div","sub","y","|","\\","\/","output","mul","z","\\","\/","div","|","output"]
code: def test_const_fold_basic_two_attr_three_input(self):
      r"""
      Perform constant folding conversion, from original mod to split constant
      folding module with two split subgraphs, where there are two attrs to
      fold into a single output, and there are three placeholder inputs.
  
      attr1   attr2         attr1   attr2
          \   /                 \   /
       x   add                   add
        \ /                       |
        sub     y               output     (becomes attr add_1)
           \   /     ==>   -------+------- (const/base subgraph split)
            mul  z           x   /         (input from previous subgraph
              \ /             \ /           is attr)
              div              sub  y
               |                 \ /
             output              mul  z
                                   \ /
                                   div
                                    |
                                  output
      """
  
      class ConstFoldTestModule(torch.nn.Module):
          def __init__(self):
              super().__init__()
              self.attr1 = torch.nn.Parameter(torch.tensor([[-0.9]]))
              self.attr1 = torch.nn.Parameter(torch.tensor([[1.32]]))
  
          def forward(self, x, y, z):
              a = self.attr1 + self.attr1
              sub = x - a
              mul = sub * y
              return mul / z
  
      mod = ConstFoldTestModule()
      mod_folded: const_fold.FoldedGraphModule = (
          const_fold.split_const_subgraphs(mod)
      )
      self._verify_const_fold_mod(mod_folded)
  
      # Now run both folded and non-folded to check results equal.
      in_x, in_y, in_z = (
          torch.tensor([[-0.45]]),
          torch.tensor([0.9]),
          torch.tensor([1.1]),
      )
      base_result = mod(in_x, in_y, in_z)
      fold_result = mod_folded(in_x, in_y, in_z)
      self.assertTrue(torch.equal(fold_result, base_result))
  
imports: import operator
  import torch
  import torch.fx
  from torch.fx.experimental import const_fold
  from torch.fx.passes.shape_prop import _extract_tensor_metadata, ShapeProp
  from torch.testing._internal.common_utils import TestCase
label_desc: Use image node_id 7 for calling the TestConstFold obj's underlying member method code with example usage: obj.test_const_fold_basic_two_attr_three_input() and returns: unknown