Skip to content
  1. Mar 19, 2021
    • Andrew Young's avatar
      [mlir] Support use-def cycles in graph regions during regionDCE · f178c13f
      Andrew Young authored
      When deleting operations in DCE, the algorithm uses a post-order walk of
      the IR to ensure that value uses were erased before value defs. Graph
      regions do not have the same structural invariants as SSA CFG, and this
      post order walk could delete value defs before uses.  This problem is
      guaranteed to occur when there is a cycle in the use-def graph.
      
      This change stops DCE from visiting the operations and blocks in any
      meaningful order.  Instead, we rely on explicitly dropping all uses of a
      value before deleting it.
      
      Reviewed By: mehdi_amini, rriddle
      
      Differential Revision: https://reviews.llvm.org/D98919
      f178c13f
  2. Mar 11, 2021
    • River Riddle's avatar
      [mlir] Optimize the implementation of RegionDCE · 4e02eb80
      River Riddle authored
      The current implementation has some inefficiencies that become noticeable when running on large modules. This revision optimizes the code, and updates some out-dated idioms with newer utilities. The main components of this optimization include:
      
      * Add an overload of Block::eraseArguments that allows for O(N) erasure of disjoint arguments.
      * Don't process entry block arguments given that we don't erase them at this point.
      * Don't track individual operation results, given that we don't erase them. We can just track the parent operation.
      
      Differential Revision: https://reviews.llvm.org/D98309
      4e02eb80
  3. Feb 09, 2021
    • River Riddle's avatar
      [mlir][IR] Remove the concept of `OperationProperties` · fe7c0d90
      River Riddle authored
      These properties were useful for a few things before traits had a better integration story, but don't really carry their weight well these days. Most of these properties are already checked via traits in most of the code. It is better to align the system around traits, and improve the performance/cost of traits in general.
      
      Differential Revision: https://reviews.llvm.org/D96088
      fe7c0d90
  4. Jan 07, 2021
  5. Nov 20, 2020
  6. Aug 26, 2020
  7. May 15, 2020
    • Stephen Neuendorffer's avatar
      [MLIR] Continue renaming of "SideEffects" · eb623ae8
      Stephen Neuendorffer authored
      MLIRSideEffects -> MLIRSideEffectInterfaces
      SideEffects.h -> SideEffectInterfaces.h
      SideEffects.cpp -> SideEffectInterface.cpp
      
      Note that I haven't renamed TableGen/SideEffects.h or TableGen/SideEffects.cpp
      
      find -name "*.h" -exec sed -i "s/SideEffects.h/SideEffectInterfaces.h/" "{}" \;
      find -name "CMakeLists.txt" -exec sed -i "s/MLIRSideEffects/MLIRSideEffectInterfaces/" "{}" \;
      
      Differential Revision: https://reviews.llvm.org/D79890
      eb623ae8
  8. May 05, 2020
  9. Apr 30, 2020
  10. Mar 12, 2020
    • River Riddle's avatar
      [mlir][SideEffects] Replace HasNoSideEffect with the memory effect interfaces. · 0ddba0bd
      River Riddle authored
      HasNoSideEffect can now be implemented using the MemoryEffectInterface, removing the need to check multiple things for the same information. This also removes an easy foot-gun for users as 'Operation::hasNoSideEffect' would ignore operations that dynamically, or recursively, have no side effects. This also leads to an immediate improvement in some of the existing users, such as DCE, now that they have access to more information.
      
      Differential Revision: https://reviews.llvm.org/D76036
      0ddba0bd
  11. Mar 10, 2020
  12. Mar 05, 2020
  13. Jan 26, 2020
  14. Jan 13, 2020
  15. Jan 11, 2020
  16. Dec 24, 2019
  17. Dec 23, 2019
  18. Dec 18, 2019
  19. Nov 21, 2019
  20. Sep 08, 2019
  21. Sep 02, 2019
  22. Aug 10, 2019
  23. Jun 20, 2019
    • Alex Zinenko's avatar
      Factor Region::getUsedValuesDefinedAbove into Transforms/RegionUtils · 4291ae74
      Alex Zinenko authored
      Arguably, this function is only useful for transformations and should not
      pollute the main IR.  Also make sure it accepts a the resulting container
      by-reference instead of returning it.
      
      PiperOrigin-RevId: 253622981
      4291ae74
    • Alex Zinenko's avatar
      Convert a nest affine loops to a GPU kernel · ee6f84ae
      Alex Zinenko authored
      This converts entire loops into threads/blocks.  No check on the size of the
      block or grid, or on the validity of parallelization is performed, it is under
      the responsibility of the caller to strip-mine the loops and to perform the
      dependence analysis before calling the conversion.
      
      PiperOrigin-RevId: 253189268
      ee6f84ae
  24. May 20, 2019
    • Geoffrey Martin-Noble's avatar
      Rename VectorOrTensorType to ShapedType · 090662c5
      Geoffrey Martin-Noble authored
          This is in preparation for making it also support/be a parent class of MemRefType. MemRefs have similar shape/rank/element semantics and it would be useful to be able to use these same utilities for them.
      
          This CL should not change any semantics and only change variables, types, string literals, and comments. In follow-up CLs I will prepare all callers to handle MemRef types or remove their dependence on ShapedType.
      
          Discussion/Rationale in https://groups.google.com/a/tensorflow.org/forum/#!topic/mlir/cHLoyfGu8y8
      
      --
      
      PiperOrigin-RevId: 248476449
      090662c5
    • Stella Laurenzo's avatar
      Upstreaming Quantizer tool (part 2). · 79265887
      Stella Laurenzo authored
          This adds some additional core types and utilities, notably the constraint analysis graph (CAG) structures, associated metadata and configuration policy object base class.
      
          The CAG is not particularly memory efficient as it stands now. I had started some work to turn it into a form that could be better managed by a bump pointer allocator but abandoned that for now in favor of having something that does semantically what I was going for as a starting point.
      
      --
      
      PiperOrigin-RevId: 248413133
      79265887
    • Jacques Pienaar's avatar
      Remove unnecessary C++ specifier in CPP files. NFC. · cde4d5a6
      Jacques Pienaar authored
          These are only required in .h files to disambiguate between C and C++ header files.
      
      --
      
      PiperOrigin-RevId: 248219135
      cde4d5a6
  25. May 06, 2019
    • Lei Zhang's avatar
      [TableGen] Support multiple variadic operands/results · 6749c21d
      Lei Zhang authored
          Certain ops can have multiple variadic operands/results, e.g., `tf.DynamicStitch`.
          Even if an op has only one variadic operand/result, it is not necessarily the
          very last one, e.g., `tf.RaggedGather`. This CL enhances TableGen subsystem to be
          able to represent such cases.
      
          In order to deduce the operand/result value range for each variadic operand,
          currently we only support variadic operands/results all of the same size.
          So two new traits, `SameVariadicOperandSize` and `SameVariadicResultSize` are
          introduced.
      
      --
      
      PiperOrigin-RevId: 245310628
      6749c21d
  26. Apr 18, 2019
    • Smit Hinsu's avatar
      NFC: Simplify named attribute in TableGen generators · 0047ef97
      Smit Hinsu authored
          Now, op attribute names don't have '.' in their names so the special handling for it
          can be removed. Attributes for functions still have dialect prefix with '.' as separator but TableGen does not deal with functions.
      
          TESTED with existing unit tests
      
      --
      
      PiperOrigin-RevId: 243287462
      0047ef97
  27. Mar 30, 2019
  28. Mar 29, 2019
Loading