Skip to content
  1. Feb 12, 2021
  2. Feb 11, 2021
    • Nicolas Vasilache's avatar
      s[mlir] Tighten computation of inferred SubView result type. · 5bc4f884
      Nicolas Vasilache authored
      The AffineMap in the MemRef inferred by SubViewOp may have uncompressed symbols which result in type mismatch on otherwise unused symbols. Make the computation of the AffineMap compress those unused symbols which results in better canonical types.
      Additionally, improve the error message to report which inferred type was expected.
      
      Differential Revision: https://reviews.llvm.org/D96551
      5bc4f884
    • Stella Stamenova's avatar
      Support multi-configuration generators correctly in several config files · ed98676f
      Stella Stamenova authored
      Multi-configuration generators (such as Visual Studio and Xcode) allow the specification of a build flavor at build time instead of config time, so the lit configuration files need to support that - and they do for the most part. There are several places that had one of two issues (or both!):
      
      1) Paths had %(build_mode)s set up, but then not configured, resulting in values that would not work correctly e.g. D:/llvm-build/%(build_mode)s/bin/dsymutil.exe
      2) Paths did not have %(build_mode)s set up, but instead contained $(Configuration) (which is the value for Visual Studio at configuration time, for Xcode they would have had the equivalent) e.g. "D:/llvm-build/$(Configuration)/lib".
      
      This seems to indicate that we still have a lot of fragility in the configurations, but also that a number of these paths are never used (at least on Windows) since the errors appear to have been there a while.
      
      This patch fixes the configurations and it has been tested with Ninja and Visual Studio to generate the correct paths. We should consider removing some of these settings altogether.
      
      Reviewed By: JDevlieghere, mehdi_amini
      
      Differential Revision: https://reviews.llvm.org/D96427
      ed98676f
    • Hanhan Wang's avatar
      [mlir][Linalg] Add conv ops with TF definition. · 9325b8da
      Hanhan Wang authored
      The dimension order of a filter in tensorflow is
      [filter_height, filter_width, in_channels, out_channels], which is different
      from current definition. The current definition follows TOSA spec. Add TF
      version conv ops to .tc, so we do not have to insert a transpose op around a
      conv op.
      
      Reviewed By: antiagainst
      
      Differential Revision: https://reviews.llvm.org/D96038
      9325b8da
    • Aart Bik's avatar
      [mlir][sparse] reduce tensor dimensions in sparse test · 11bec2a8
      Aart Bik authored
      Rationale:
      BuiltinTypes.cpp observed overflow when computing size of
      tensor<100x200x300x400x500x600x700x800xf32>.
      
      Reviewed By: stellaraccident
      
      Differential Revision: https://reviews.llvm.org/D96475
      11bec2a8
    • Mehdi Amini's avatar
      Fix CMake configuration for MLIR unittests · 09cfec62
      Mehdi Amini authored
      The CMake changes in 2aa1af9b to make it possible to build MLIR as a
      standalone project unfortunately disabled all unit-tests from the
      regular in-tree build.
      09cfec62
    • Rob Suderman's avatar
      [MLIR][TOSA] Tosa elementwise broadcasting · c19a4128
      Rob Suderman authored
      Added support for broadcasting size-1 dimensions for TOSA elemtnwise
      operations.
      
      Differential Revision: https://reviews.llvm.org/D96190
      c19a4128
  3. Feb 10, 2021
  4. Feb 09, 2021
  5. Feb 08, 2021
  6. Feb 06, 2021
    • Tung D. Le's avatar
      [MLIR] [affine-loop-fusion] Fix a bug about non-result ops in affine-loop-fusion · 05c6c648
      Tung D. Le authored
      This patch fixes the following bug when calling --affine-loop-fusion
      
      Input program:
       ```mlir
      func @should_not_fuse_since_top_level_non_affine_non_result_users(
          %in0 : memref<32xf32>, %in1 : memref<32xf32>) {
        %c0 = constant 0 : index
        %cst_0 = constant 0.000000e+00 : f32
      
        affine.for %d = 0 to 32 {
          %lhs = affine.load %in0[%d] : memref<32xf32>
          %rhs = affine.load %in1[%d] : memref<32xf32>
          %add = addf %lhs, %rhs : f32
          affine.store %add, %in0[%d] : memref<32xf32>
        }
        store %cst_0, %in0[%c0] : memref<32xf32>
        affine.for %d = 0 to 32 {
          %lhs = affine.load %in0[%d] : memref<32xf32>
          %rhs = affine.load %in1[%d] : memref<32xf32>
          %add = addf %lhs, %rhs: f32
          affine.store %add, %in0[%d] : memref<32xf32>
        }
        return
      }
      ```
      
      call --affine-loop-fusion, we got an incorrect output:
      
      ```mlir
      func @should_not_fuse_since_top_level_non_affine_non_result_users(%arg0: memref<32xf32>, %arg1: memref<32xf32>) {
        %c0 = constant 0 : index
        %cst = constant 0.000000e+00 : f32
        store %cst, %arg0[%c0] : memref<32xf32>
        affine.for %arg2 = 0 to 32 {
          %0 = affine.load %arg0[%arg2] : memref<32xf32>
          %1 = affine.load %arg1[%arg2] : memref<32xf32>
          %2 = addf %0, %1 : f32
          affine.store %2, %arg0[%arg2] : memref<32xf32>
          %3 = affine.load %arg0[%arg2] : memref<32xf32>
          %4 = affine.load %arg1[%arg2] : memref<32xf32>
          %5 = addf %3, %4 : f32
          affine.store %5, %arg0[%arg2] : memref<32xf32>
        }
        return
      }
      ```
      
      This happened because when analyzing the source and destination nodes,
      affine loop fusion ignored non-result ops sandwitched between them. In
      other words, the MemRefDependencyGraph in the affine loop fusion ignored
      these non-result ops.
      
      This patch solves the issue by adding these non-result ops to the
      MemRefDependencyGraph.
      
      Reviewed By: bondhugula
      
      Differential Revision: https://reviews.llvm.org/D95668
      05c6c648
  7. Feb 05, 2021
Loading