Skip to content
  1. May 07, 2021
  2. May 06, 2021
  3. May 05, 2021
    • Emilio Cota's avatar
      [mlir] Add polynomial approximation for math::ExpM1 · 0edc4bc8
      Emilio Cota authored
      This approximation matches the one in Eigen.
      
      ```
      name                      old cpu/op  new cpu/op  delta
      BM_mlir_Expm1_f32/10      90.9ns ± 4%  52.2ns ± 4%  -42.60%    (p=0.000 n=74+87)
      BM_mlir_Expm1_f32/100      837ns ± 3%   231ns ± 4%  -72.43%    (p=0.000 n=79+69)
      BM_mlir_Expm1_f32/1k      8.43µs ± 3%  1.58µs ± 5%  -81.30%    (p=0.000 n=77+83)
      BM_mlir_Expm1_f32/10k     83.8µs ± 3%  15.4µs ± 5%  -81.65%    (p=0.000 n=83+69)
      BM_eigen_s_Expm1_f32/10   68.8ns ±17%  72.5ns ±14%   +5.40%  (p=0.000 n=118+115)
      BM_eigen_s_Expm1_f32/100   694ns ±11%   717ns ± 2%   +3.34%   (p=0.000 n=120+75)
      BM_eigen_s_Expm1_f32/1k   7.69µs ± 2%  7.97µs ±11%   +3.56%   (p=0.000 n=95+117)
      BM_eigen_s_Expm1_f32/10k  88.0µs ± 1%  89.3µs ± 6%   +1.45%   (p=0.000 n=74+106)
      BM_eigen_v_Expm1_f32/10   44.3ns ± 6%  45.0ns ± 8%   +1.45%   (p=0.018 n=81+111)
      BM_eigen_v_Expm1_f32/100   351ns ± 1%   360ns ± 9%   +2.58%    (p=0.000 n=73+99)
      BM_eigen_v_Expm1_f32/1k   3.31µs ± 1%  3.42µs ± 9%   +3.37%   (p=0.000 n=71+100)
      BM_eigen_v_Expm1_f32/10k  33.7µs ± 8%  34.1µs ± 9%   +1.04%    (p=0.007 n=99+98)
      ```
      
      Reviewed By: ezhulenev
      
      Differential Revision: https://reviews.llvm.org/D101852
      0edc4bc8
    • Philipp Krones's avatar
      [MC] Untangle MCContext and MCObjectFileInfo · 632ebc4a
      Philipp Krones authored
      This untangles the MCContext and the MCObjectFileInfo. There is a circular
      dependency between MCContext and MCObjectFileInfo. Currently this dependency
      also exists during construction: You can't contruct a MOFI without a MCContext
      without constructing the MCContext with a dummy version of that MOFI first.
      This removes this dependency during construction. In a perfect world,
      MCObjectFileInfo wouldn't depend on MCContext at all, but only be stored in the
      MCContext, like other MC information. This is future work.
      
      This also shifts/adds more information to the MCContext making it more
      available to the different targets. Namely:
      
      - TargetTriple
      - ObjectFileType
      - SubtargetInfo
      
      Reviewed By: MaskRay
      
      Differential Revision: https://reviews.llvm.org/D101462
      632ebc4a
    • Javier Setoain's avatar
      [mlir][ArmSVE] Add masked arithmetic operations · 95861216
      Javier Setoain authored
      These instructions map to SVE-specific instrinsics that accept a
      predicate operand to support control flow in vector code.
      
      Differential Revision: https://reviews.llvm.org/D100982
      95861216
    • Sergei Grechanik's avatar
      [mlir][Affine][Vector] Support vectorizing reduction loops · d80b04ab
      Sergei Grechanik authored
      This patch adds support for vectorizing loops with 'iter_args'
      implementing known reductions along the vector dimension. Comparing to
      the non-vector-dimension case, two additional things are done during
      vectorization of such loops:
      - The resulting vector returned from the loop is reduced to a scalar
        using `vector.reduce`.
      - In some cases a mask is applied to the vector yielded at the end of
        the loop to prevent garbage values from being written to the
        accumulator.
      
      Vectorization of reduction loops is disabled by default. To enable it, a
      map from loops to array of reduction descriptors should be explicitly passed to
      `vectorizeAffineLoops`, or `vectorize-reductions=true` should be passed
      to the SuperVectorize pass.
      
      Current limitations:
      - Loops with a non-unit step size are not supported.
      - n-D vectorization with n > 1 is not supported.
      
      Reviewed By: nicolasvasilache
      
      Differential Revision: https://reviews.llvm.org/D100694
      d80b04ab
    • Tobias Gysi's avatar
      [mlir][linalg] Fix bug in the fusion on tensors index op handling. · 4a6ee23d
      Tobias Gysi authored
      The old index op handling let the new index operations point back to the
      producer block. As a result, after fusion some index operations in the
      fused block had back references to the old producer block resulting in
      illegal IR. The patch now relies on a block and value mapping to avoid
      such back references.
      
      Differential Revision: https://reviews.llvm.org/D101887
      4a6ee23d
    • Alexander Belyaev's avatar
    • Javier Setoain's avatar
      [mlir][ArmSVE] Add basic arithmetic operations · 001d601a
      Javier Setoain authored
      While we figure out how to best add Standard support for scalable
      vectors, these instructions provide a workaround for basic arithmetic
      between scalable vectors.
      
      Reviewed By: nicolasvasilache
      
      Differential Revision: https://reviews.llvm.org/D100837
      001d601a
    • William S. Moses's avatar
    • Aart Bik's avatar
      [mlir][sparse] Introduce proper sparsification passes · a2c9d4bb
      Aart Bik authored
      This revision migrates more code from Linalg into the new permanent home of
      SparseTensor. It replaces the test passes with proper compiler passes.
      
      NOTE: the actual removal of the last glue and clutter in Linalg will follow
      
      Reviewed By: bixia
      
      Differential Revision: https://reviews.llvm.org/D101811
      a2c9d4bb
  4. May 04, 2021
  5. May 03, 2021
  6. May 02, 2021
  7. May 01, 2021
  8. Apr 30, 2021
    • Ahmed Taei's avatar
      Add patterns to lower vector.multi_reduction into a sequence of vector.reduction · 499e89fc
      Ahmed Taei authored
      Three patterns are added to convert into vector.multi_reduction into a
      sequence of vector.reduction as the following:
      
      - Transpose the inputs so inner most dimensions are always reduction.
      - Reduce rank of vector.multi_reduction into 2d with inner most
      reduction dim (get the 2d canical form)
      - 2D canonical form is converted into a sequence of vector.reduction.
      
      There are two things we might worth in a follow up diff:
      
      - An scf.for (maybe optionally) around vector.reduction instead of unrolling it.
      - Breakdown the vector.reduction into a sequence of vector.reduction
      (e.g tree-based reduction) instead of relying on how downstream dialects
      handle it.
        Note: this will requires passing target-vector-length
      
      Differential Revision: https://reviews.llvm.org/D101570
      499e89fc
    • Aart Bik's avatar
      [mlir][sparse] migrate sparse operations into new sparse tensor dialect · 319072f4
      Aart Bik authored
      This is the very first step toward removing the glue and clutter from linalg and
      replace it with proper sparse tensor types. This revision migrates the LinalgSparseOps
      into SparseTensorOps of a sparse tensor dialect. This also provides a new home for
      sparse tensor related transformation.
      
      NOTE: the actual replacement with sparse tensor types (and removal of linalg glue/clutter)
      will follow but I am trying to keep the amount of changes per revision manageable.
      
      Differential Revision: https://reviews.llvm.org/D101573
      319072f4
Loading