torch-mlir/lib/Dialect/Torch/IR
Sean Silva 79aade33da Make MaximizeValueSemantics a bit smarter.
This adds a pattern to MaximizeValueSemantics which does a simple
abstract interpretation within a block, which handles simple cases of
`torch.overwrite_tensor`, enough to remove all the unnecessary uses of
non-value tensors in ResNet right now.

Before/after IR:
[gist](https://gist.github.com/silvasean/a3e1ef625b19dfc63579f73cd3b543b6)

Also,
- Split `torch.copy.tensor` into `torch.copy.to_tensor` and
  `torch.copy.to_vtensor` which convert between value and non-value
  semantic tensors. This is a much cleaner factorization as they have
  very separate use cases and properties (e.g. different side effects)
- Remove the various canonicalization patterns they had, which were
  confusing because they resulted in limited forms of maximizing value
  semantics throughout the pipeline. We should structure our compilation
  pipeline such that only MaximizeValueSemantics should be maximizing
  value semantics.
- Adjust pass pipeline to only run MaximizeValueSemantics once.
- Make OverwriteTensorOp `$value` always be a value tensor and
  `$overwritten` be a non-value tensor.
2021-06-22 16:48:57 -07:00
..
CMakeLists.txt Add `!torch.bool` type. 2021-06-16 13:22:00 -07:00
TorchDialect.cpp Add `torch.vtensor.literal` op. 2021-06-17 14:37:04 -07:00
TorchOps.cpp Make MaximizeValueSemantics a bit smarter. 2021-06-22 16:48:57 -07:00
TorchTypes.cpp Add `!torch.tuple<T1, T2>` type. 2021-06-15 08:15:22 -07:00