This optimization pass rewrites the graph to replace 2D
     convolutions and linear ops with their prepacked counterparts.
     Prepacked ops are stateful ops in that, they require some state
     to be created, such as weight prepacking and use this state, i.e.
     prepacked weights, during op execution. XNNPACK is one such
     backend that provides prepacked ops, with kernels optimized for
     mobile platforms (such as ARM CPUs). Prepacking of weight enables
     efficient memory access and thus faster kernel execution. At the
     moment "optimize_for_mobile" pass rewrites the graph to replace
     "Conv2D/Linear" with 1) op that pre-packs weight for XNNPACK
     conv2d/linear ops and 2) op that takes pre-packed weight and
     activation as input and generates output activations. Since 1
     needs to be done only once, we fold the weight pre-packing such
     that it is done only once at model load time. This pass of the
     "optimize_for_mobile" does 1 and 2 and then folds, i.e. removes,