class_docstr: Input graph:
  input --> sigmoid --> mul --> output
  Output graph:
  input --> silu --> output
code: def test_0(self, reverse_order):
      x_shape = tuple(np.random.randint(low=1, high=4, size=5))
  
      @mb.program(input_specs=[mb.TensorSpec(shape=x_shape)])
      def program(x):
          sigmoid_x = mb.sigmoid(x=x)
          if not reverse_order:
              x = mb.mul(x=x, y=sigmoid_x)
          else:
              x = mb.mul(x=sigmoid_x, y=x)
          return x
  
      prev_prog, prev_block, block = apply_pass_and_basic_check(
          program, "mil_backend::fuse_activation_silu"
      )
  
      assert get_op_types_in_program(prev_prog) == ["sigmoid", "mul"]
      assert get_op_types_in_program(program) == ["silu"]
  
      assert_model_is_valid(
          program=program,
          inputs={"x": x_shape},
          backend=("mlprogram", "fp32"),
          expected_output_shapes={
              block.outputs[0].name: tuple(x_shape)
          },
      )
  
imports: import copy
  import itertools
  import numpy
  import pytest
  import coremltools
  from coremltools.converters.mil._deployment_compatibility import AvailableTarget
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import types
  from coremltools.converters.mil.mil.passes.pass_registry import PASS_REGISTRY
  from coremltools.converters.mil.testing_utils import apply_pass_and_basic_check, assert_model_is_valid, get_op_types_in_program
label_desc: Use image node_id 1 for calling the TestPassFuseActivationSiLU obj's underlying member method code with example usage: obj.test_0(reverse_order) and returns: x