// RUN: mlir-opt %s -sparsification | FileCheck %s


// The file contains examples that will be rejected by sparsifier
// (we expect the linalg.generic unchanged).
#SparseVector = #sparse_tensor.encoding<{map = (d0) -> (d0 : compressed)}>

#trait = {
  indexing_maps = [ 
    affine_map<(i) -> (i)>,  // a (in)
    affine_map<(i) -> ()>    // x (out)
  ],  
  iterator_types = ["reduction"]
}

// CHECK-LABEL:   func.func @sparse_reduction_subi(
// CHECK-SAME:      %[[VAL_0:.*]]: tensor<i32>,
// CHECK-SAME:      %[[VAL_1:.*]]: tensor<?xi32, #sparse{{[0-9]*}}>) -> tensor<i32> {
// CHECK:           %[[VAL_2:.*]] = linalg.generic
// CHECK:           ^bb0(%[[VAL_3:.*]]: i32, %[[VAL_4:.*]]: i32):
// CHECK:             %[[VAL_5:.*]] = arith.subi %[[VAL_3]], %[[VAL_4]] : i32
// CHECK:             linalg.yield %[[VAL_5]] : i32
// CHECK:           } -> tensor<i32>
// CHECK:           return %[[VAL_6:.*]] : tensor<i32>
func.func @sparse_reduction_subi(%argx: tensor<i32>,
                             %arga: tensor<?xi32, #SparseVector>)
 -> tensor<i32> {
  %0 = linalg.generic #trait
     ins(%arga: tensor<?xi32, #SparseVector>)
      outs(%argx: tensor<i32>) {
      ^bb(%a: i32, %x: i32):
        // NOTE: `subi %a, %x` is the reason why the program is rejected by the sparsifier.
        // It is because we do not allow `-outTensor` in reduction loops as it creates cyclic
        // dependences.
        %t = arith.subi %a, %x: i32 
        linalg.yield %t : i32 
  } -> tensor<i32>
  return %0 : tensor<i32>
}
