1*70e227a4SAart Bik// RUN: mlir-opt %s --sparsification-and-bufferization | FileCheck %s 2*70e227a4SAart Bik 3*70e227a4SAart Bik#map = affine_map<(d0, d1, d2) -> (d0, d1, d2)> 4*70e227a4SAart Bik 5*70e227a4SAart Bik#sparse = #sparse_tensor.encoding<{ 6*70e227a4SAart Bik map = (d0, d1, d2) -> (d0 : dense, d1 : dense, d2 : compressed) 7*70e227a4SAart Bik}> 8*70e227a4SAart Bik 9*70e227a4SAart Bik// 10*70e227a4SAart Bik// Make sure a simple ReLU passes the sparsifier 11*70e227a4SAart Bik// 12*70e227a4SAart Bik// CHECK-LABEL: func.func @relu 13*70e227a4SAart Bik// CHECK: scf.for 14*70e227a4SAart Bik// CHECK: scf.for 15*70e227a4SAart Bik// CHECK: scf.for 16*70e227a4SAart Bik// CHECK: arith.cmpf ugt 17*70e227a4SAart Bik// CHECK: arith.select 18*70e227a4SAart Bik// 19*70e227a4SAart Bikfunc.func @relu(%arg0: tensor<10x20x30xf64, #sparse>) -> tensor<10x20x30xf64, #sparse> { 20*70e227a4SAart Bik %cst = arith.constant 0.000000e+00 : f64 21*70e227a4SAart Bik %0 = tensor.empty() : tensor<10x20x30xf64> 22*70e227a4SAart Bik %1 = linalg.generic { 23*70e227a4SAart Bik indexing_maps = [#map, #map], 24*70e227a4SAart Bik iterator_types = ["parallel", "parallel", "parallel"]} 25*70e227a4SAart Bik ins(%arg0 : tensor<10x20x30xf64, #sparse>) 26*70e227a4SAart Bik outs(%0 : tensor<10x20x30xf64>) { 27*70e227a4SAart Bik ^bb0(%in: f64, %out: f64): 28*70e227a4SAart Bik %2 = arith.cmpf ugt, %in, %cst : f64 29*70e227a4SAart Bik %3 = arith.select %2, %in, %cst : f64 30*70e227a4SAart Bik linalg.yield %3 : f64 31*70e227a4SAart Bik } -> tensor<10x20x30xf64> 32*70e227a4SAart Bik %cast = tensor.cast %1 : tensor<10x20x30xf64> to tensor<10x20x30xf64, #sparse> 33*70e227a4SAart Bik return %cast : tensor<10x20x30xf64, #sparse> 34*70e227a4SAart Bik} 35