Changeset View
Changeset View
Standalone View
Standalone View
mlir/test/Dialect/SparseTensor/sparse_concat.mlir
// RUN: mlir-opt %s --sparse-tensor-conversion --canonicalize --cse | FileCheck %s | // RUN: mlir-opt %s --sparse-tensor-conversion --canonicalize --cse | FileCheck %s | ||||
#SparseMatrix = #sparse_tensor.encoding<{dimLevelType = ["compressed", "compressed"]}> | #SparseMatrix = #sparse_tensor.encoding<{dimLevelType = ["compressed", "compressed"]}> | ||||
#SparseMatrix_P = #sparse_tensor.encoding<{ | #SparseMatrix_P = #sparse_tensor.encoding<{ | ||||
dimLevelType = [ "compressed", "compressed" ], | dimLevelType = [ "compressed", "compressed" ], | ||||
dimOrdering = affine_map<(i,j) -> (j,i)> | dimOrdering = affine_map<(i,j) -> (j,i)> | ||||
}> | }> | ||||
// CHECK-LABEL: func.func @concat_mix_dense( | // CHECK-LABEL: func.func @concat_mix_dense( | ||||
// CHECK-SAME: %[[TMP_arg0:.*]]: tensor<2x4xf64>, | // CHECK-SAME: %[[TMP_arg0:.*]]: tensor<2x4xf64>, | ||||
// CHECK-SAME: %[[TMP_arg1:.*]]: !llvm.ptr<i8>) | // CHECK-SAME: %[[TMP_arg1:.*]]: !llvm.ptr<i8>) | ||||
// CHECK-DAG: %[[TMP_c2:.*]] = arith.constant 2 : index | // CHECK-DAG: %[[TMP_c2:.*]] = arith.constant 2 : index | ||||
// CHECK-DAG: %[[TMP_c6_i32:.*]] = arith.constant 6 : i32 | // CHECK-DAG: %[[TMP_c6_i32:.*]] = arith.constant 6 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | // CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | ||||
// CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | // CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i8:.*]] = arith.constant 1 : i8 | // CHECK-DAG: %[[TMP_c8_i8:.*]] = arith.constant 8 : i8 | ||||
// CHECK-DAG: %[[TMP_c3:.*]] = arith.constant 3 : index | // CHECK-DAG: %[[TMP_c3:.*]] = arith.constant 3 : index | ||||
// CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | // CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | ||||
// CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | // CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | ||||
// CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | // CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | ||||
// CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | // CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | ||||
// CHECK: %[[TMP_0:.*]] = memref.alloc() : memref<5x4xf64> | // CHECK: %[[TMP_0:.*]] = memref.alloc() : memref<5x4xf64> | ||||
// CHECK: linalg.fill ins(%[[TMP_cst]] : f64) outs(%[[TMP_0]] : memref<5x4xf64>) | // CHECK: linalg.fill ins(%[[TMP_cst]] : f64) outs(%[[TMP_0]] : memref<5x4xf64>) | ||||
// CHECK: scf.for %[[TMP_arg2:.*]] = %[[TMP_c0]] to %[[TMP_c2]] step %[[TMP_c1]] { | // CHECK: scf.for %[[TMP_arg2:.*]] = %[[TMP_c0]] to %[[TMP_c2]] step %[[TMP_c1]] { | ||||
// CHECK: scf.for %[[TMP_arg3:.*]] = %[[TMP_c0]] to %[[TMP_c4]] step %[[TMP_c1]] { | // CHECK: scf.for %[[TMP_arg3:.*]] = %[[TMP_c0]] to %[[TMP_c4]] step %[[TMP_c1]] { | ||||
// CHECK: %[[TMP_12:.*]] = tensor.extract %[[TMP_arg0]][%[[TMP_arg2]], %[[TMP_arg3]]] : tensor<2x4xf64> | // CHECK: %[[TMP_12:.*]] = tensor.extract %[[TMP_arg0]][%[[TMP_arg2]], %[[TMP_arg3]]] : tensor<2x4xf64> | ||||
// CHECK: %[[TMP_13:.*]] = arith.cmpf une, %[[TMP_12]], %[[TMP_cst]] : f64 | // CHECK: %[[TMP_13:.*]] = arith.cmpf une, %[[TMP_12]], %[[TMP_cst]] : f64 | ||||
// CHECK: scf.if %[[TMP_13]] { | // CHECK: scf.if %[[TMP_13]] { | ||||
// CHECK: memref.store %[[TMP_12]], %[[TMP_0]][%[[TMP_arg2]], %[[TMP_arg3]]] : memref<5x4xf64> | // CHECK: memref.store %[[TMP_12]], %[[TMP_0]][%[[TMP_arg2]], %[[TMP_arg3]]] : memref<5x4xf64> | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: %[[TMP_1:.*]] = memref.alloca() : memref<2xi8> | // CHECK: %[[TMP_1:.*]] = memref.alloca() : memref<2xi8> | ||||
// CHECK: %[[TMP_2:.*]] = memref.cast %[[TMP_1]] : memref<2xi8> to memref<?xi8> | // CHECK: %[[TMP_2:.*]] = memref.cast %[[TMP_1]] : memref<2xi8> to memref<?xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_1]][%[[TMP_c0]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_1]][%[[TMP_c0]]] : memref<2xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_1]][%[[TMP_c1]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_1]][%[[TMP_c1]]] : memref<2xi8> | ||||
// CHECK: %[[TMP_3:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_3:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_4:.*]] = memref.cast %[[TMP_3]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_4:.*]] = memref.cast %[[TMP_3]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c3]], %[[TMP_3]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c3]], %[[TMP_3]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c4]], %[[TMP_3]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c4]], %[[TMP_3]][%[[TMP_c1]]] : memref<2xindex> | ||||
// CHECK: %[[TMP_5:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_5:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_6:.*]] = memref.cast %[[TMP_5]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_6:.*]] = memref.cast %[[TMP_5]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c0]], %[[TMP_5]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c0]], %[[TMP_5]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c1]], %[[TMP_5]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c1]], %[[TMP_5]][%[[TMP_c1]]] : memref<2xindex> | ||||
Show All 32 Lines | |||||
// CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | // CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | ||||
// CHECK-DAG: %[[TMP_c4_i32:.*]] = arith.constant 4 : i32 | // CHECK-DAG: %[[TMP_c4_i32:.*]] = arith.constant 4 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | // CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | ||||
// CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | // CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | ||||
// CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | // CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | ||||
// CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | // CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | ||||
// CHECK-DAG: %[[TMP_c5:.*]] = arith.constant 5 : index | // CHECK-DAG: %[[TMP_c5:.*]] = arith.constant 5 : index | ||||
// CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | // CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | ||||
// CHECK-DAG: %[[TMP_c1_i8:.*]] = arith.constant 1 : i8 | // CHECK-DAG: %[[TMP_c8_i8:.*]] = arith.constant 8 : i8 | ||||
// CHECK: %[[TMP_0:.*]] = memref.alloca() : memref<2xi8> | // CHECK: %[[TMP_0:.*]] = memref.alloca() : memref<2xi8> | ||||
// CHECK: %[[TMP_1:.*]] = memref.cast %[[TMP_0]] : memref<2xi8> to memref<?xi8> | // CHECK: %[[TMP_1:.*]] = memref.cast %[[TMP_0]] : memref<2xi8> to memref<?xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_0]][%[[TMP_c0]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_0]][%[[TMP_c0]]] : memref<2xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_0]][%[[TMP_c1]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_0]][%[[TMP_c1]]] : memref<2xi8> | ||||
// CHECK: %[[TMP_2:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_2:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_3:.*]] = memref.cast %[[TMP_2]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_3:.*]] = memref.cast %[[TMP_2]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c5]], %[[TMP_2]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c5]], %[[TMP_2]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c4]], %[[TMP_2]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c4]], %[[TMP_2]][%[[TMP_c1]]] : memref<2xindex> | ||||
// CHECK: %[[TMP_4:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_4:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_5:.*]] = memref.cast %[[TMP_4]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_5:.*]] = memref.cast %[[TMP_4]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c0]], %[[TMP_4]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c0]], %[[TMP_4]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c1]], %[[TMP_4]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c1]], %[[TMP_4]][%[[TMP_c1]]] : memref<2xindex> | ||||
Show All 11 Lines | |||||
// CHECK: scf.if %[[TMP_23]] { | // CHECK: scf.if %[[TMP_23]] { | ||||
// CHECK: memref.store %[[TMP_22]], %[[TMP_8]][] : memref<f64> | // CHECK: memref.store %[[TMP_22]], %[[TMP_8]][] : memref<f64> | ||||
// CHECK: %[[TMP_24:.*]] = func.call @addEltF64(%[[TMP_7]], %[[TMP_8]], %[[TMP_10]], %[[TMP_5]]) : (!llvm.ptr<i8>, memref<f64>, memref<?xindex>, memref<?xindex>) -> !llvm.ptr<i8> | // CHECK: %[[TMP_24:.*]] = func.call @addEltF64(%[[TMP_7]], %[[TMP_8]], %[[TMP_10]], %[[TMP_5]]) : (!llvm.ptr<i8>, memref<f64>, memref<?xindex>, memref<?xindex>) -> !llvm.ptr<i8> | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: %[[TMP_11:.*]] = memref.alloca() : memref<2xi8> | // CHECK: %[[TMP_11:.*]] = memref.alloca() : memref<2xi8> | ||||
// CHECK: %[[TMP_12:.*]] = memref.cast %[[TMP_11]] : memref<2xi8> to memref<?xi8> | // CHECK: %[[TMP_12:.*]] = memref.cast %[[TMP_11]] : memref<2xi8> to memref<?xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_11]][%[[TMP_c0]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_11]][%[[TMP_c0]]] : memref<2xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_11]][%[[TMP_c1]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_11]][%[[TMP_c1]]] : memref<2xi8> | ||||
// CHECK: %[[TMP_13:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_13:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_14:.*]] = memref.cast %[[TMP_13]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_14:.*]] = memref.cast %[[TMP_13]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c3]], %[[TMP_13]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c3]], %[[TMP_13]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c4]], %[[TMP_13]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c4]], %[[TMP_13]][%[[TMP_c1]]] : memref<2xindex> | ||||
// CHECK: %[[TMP_15:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_15:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_16:.*]] = memref.cast %[[TMP_15]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_16:.*]] = memref.cast %[[TMP_15]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c0]], %[[TMP_15]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c0]], %[[TMP_15]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c1]], %[[TMP_15]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c1]], %[[TMP_15]][%[[TMP_c1]]] : memref<2xindex> | ||||
Show All 34 Lines | |||||
// CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | // CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | ||||
// CHECK-DAG: %[[TMP_c4_i32:.*]] = arith.constant 4 : i32 | // CHECK-DAG: %[[TMP_c4_i32:.*]] = arith.constant 4 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | // CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | ||||
// CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | // CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | ||||
// CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | // CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | ||||
// CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | // CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | ||||
// CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | // CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | ||||
// CHECK-DAG: %[[TMP_c5:.*]] = arith.constant 5 : index | // CHECK-DAG: %[[TMP_c5:.*]] = arith.constant 5 : index | ||||
// CHECK-DAG: %[[TMP_c1_i8:.*]] = arith.constant 1 : i8 | // CHECK-DAG: %[[TMP_c8_i8:.*]] = arith.constant 8 : i8 | ||||
// CHECK: %[[TMP_0:.*]] = memref.alloca() : memref<2xi8> | // CHECK: %[[TMP_0:.*]] = memref.alloca() : memref<2xi8> | ||||
// CHECK: %[[TMP_1:.*]] = memref.cast %[[TMP_0]] : memref<2xi8> to memref<?xi8> | // CHECK: %[[TMP_1:.*]] = memref.cast %[[TMP_0]] : memref<2xi8> to memref<?xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_0]][%[[TMP_c0]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_0]][%[[TMP_c0]]] : memref<2xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_0]][%[[TMP_c1]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_0]][%[[TMP_c1]]] : memref<2xi8> | ||||
// CHECK: %[[TMP_2:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_2:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_3:.*]] = memref.cast %[[TMP_2]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_3:.*]] = memref.cast %[[TMP_2]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c4]], %[[TMP_2]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c4]], %[[TMP_2]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c5]], %[[TMP_2]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c5]], %[[TMP_2]][%[[TMP_c1]]] : memref<2xindex> | ||||
// CHECK: %[[TMP_4:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_4:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_5:.*]] = memref.cast %[[TMP_4]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_5:.*]] = memref.cast %[[TMP_4]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c1]], %[[TMP_4]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c1]], %[[TMP_4]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c0]], %[[TMP_4]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c0]], %[[TMP_4]][%[[TMP_c1]]] : memref<2xindex> | ||||
Show All 11 Lines | |||||
// CHECK: scf.if %[[TMP_23]] { | // CHECK: scf.if %[[TMP_23]] { | ||||
// CHECK: memref.store %[[TMP_22]], %[[TMP_8]][] : memref<f64> | // CHECK: memref.store %[[TMP_22]], %[[TMP_8]][] : memref<f64> | ||||
// CHECK: %[[TMP_24:.*]] = func.call @addEltF64(%[[TMP_7]], %[[TMP_8]], %[[TMP_10]], %[[TMP_5]]) : (!llvm.ptr<i8>, memref<f64>, memref<?xindex>, memref<?xindex>) -> !llvm.ptr<i8> | // CHECK: %[[TMP_24:.*]] = func.call @addEltF64(%[[TMP_7]], %[[TMP_8]], %[[TMP_10]], %[[TMP_5]]) : (!llvm.ptr<i8>, memref<f64>, memref<?xindex>, memref<?xindex>) -> !llvm.ptr<i8> | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: %[[TMP_11:.*]] = memref.alloca() : memref<2xi8> | // CHECK: %[[TMP_11:.*]] = memref.alloca() : memref<2xi8> | ||||
// CHECK: %[[TMP_12:.*]] = memref.cast %[[TMP_11]] : memref<2xi8> to memref<?xi8> | // CHECK: %[[TMP_12:.*]] = memref.cast %[[TMP_11]] : memref<2xi8> to memref<?xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_11]][%[[TMP_c0]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_11]][%[[TMP_c0]]] : memref<2xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_11]][%[[TMP_c1]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_11]][%[[TMP_c1]]] : memref<2xi8> | ||||
// CHECK: %[[TMP_13:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_13:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_14:.*]] = memref.cast %[[TMP_13]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_14:.*]] = memref.cast %[[TMP_13]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c4]], %[[TMP_13]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c4]], %[[TMP_13]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c3]], %[[TMP_13]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c3]], %[[TMP_13]][%[[TMP_c1]]] : memref<2xindex> | ||||
// CHECK: %[[TMP_15:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_15:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_16:.*]] = memref.cast %[[TMP_15]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_16:.*]] = memref.cast %[[TMP_15]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c0]], %[[TMP_15]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c0]], %[[TMP_15]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c1]], %[[TMP_15]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c1]], %[[TMP_15]][%[[TMP_c1]]] : memref<2xindex> | ||||
Show All 26 Lines | |||||
// CHECK-LABEL: func.func @concat_mix_dense_perm_dim1( | // CHECK-LABEL: func.func @concat_mix_dense_perm_dim1( | ||||
// CHECK-SAME: %[[TMP_arg0:.*]]: tensor<4x2xf64>, | // CHECK-SAME: %[[TMP_arg0:.*]]: tensor<4x2xf64>, | ||||
// CHECK-SAME: %[[TMP_arg1:.*]]: !llvm.ptr<i8>) | // CHECK-SAME: %[[TMP_arg1:.*]]: !llvm.ptr<i8>) | ||||
// CHECK-DAG: %[[TMP_c2:.*]] = arith.constant 2 : index | // CHECK-DAG: %[[TMP_c2:.*]] = arith.constant 2 : index | ||||
// CHECK-DAG: %[[TMP_c6_i32:.*]] = arith.constant 6 : i32 | // CHECK-DAG: %[[TMP_c6_i32:.*]] = arith.constant 6 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | // CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | ||||
// CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | // CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i8:.*]] = arith.constant 1 : i8 | // CHECK-DAG: %[[TMP_c8_i8:.*]] = arith.constant 8 : i8 | ||||
// CHECK-DAG: %[[TMP_c3:.*]] = arith.constant 3 : index | // CHECK-DAG: %[[TMP_c3:.*]] = arith.constant 3 : index | ||||
// CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | // CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | ||||
// CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | // CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | ||||
// CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | // CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | ||||
// CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | // CHECK-DAG: %[[TMP_c4:.*]] = arith.constant 4 : index | ||||
// CHECK: %[[TMP_0:.*]] = memref.alloc() : memref<4x5xf64> | // CHECK: %[[TMP_0:.*]] = memref.alloc() : memref<4x5xf64> | ||||
// CHECK: linalg.fill ins(%[[TMP_cst]] : f64) outs(%[[TMP_0]] : memref<4x5xf64>) | // CHECK: linalg.fill ins(%[[TMP_cst]] : f64) outs(%[[TMP_0]] : memref<4x5xf64>) | ||||
// CHECK: scf.for %[[TMP_arg2:.*]] = %[[TMP_c0]] to %[[TMP_c4]] step %[[TMP_c1]] { | // CHECK: scf.for %[[TMP_arg2:.*]] = %[[TMP_c0]] to %[[TMP_c4]] step %[[TMP_c1]] { | ||||
// CHECK: scf.for %[[TMP_arg3:.*]] = %[[TMP_c0]] to %[[TMP_c2]] step %[[TMP_c1]] { | // CHECK: scf.for %[[TMP_arg3:.*]] = %[[TMP_c0]] to %[[TMP_c2]] step %[[TMP_c1]] { | ||||
// CHECK: %[[TMP_12:.*]] = tensor.extract %[[TMP_arg0]][%[[TMP_arg2]], %[[TMP_arg3]]] : tensor<4x2xf64> | // CHECK: %[[TMP_12:.*]] = tensor.extract %[[TMP_arg0]][%[[TMP_arg2]], %[[TMP_arg3]]] : tensor<4x2xf64> | ||||
// CHECK: %[[TMP_13:.*]] = arith.cmpf une, %[[TMP_12]], %[[TMP_cst]] : f64 | // CHECK: %[[TMP_13:.*]] = arith.cmpf une, %[[TMP_12]], %[[TMP_cst]] : f64 | ||||
// CHECK: scf.if %[[TMP_13]] { | // CHECK: scf.if %[[TMP_13]] { | ||||
// CHECK: memref.store %[[TMP_12]], %[[TMP_0]][%[[TMP_arg2]], %[[TMP_arg3]]] : memref<4x5xf64> | // CHECK: memref.store %[[TMP_12]], %[[TMP_0]][%[[TMP_arg2]], %[[TMP_arg3]]] : memref<4x5xf64> | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: %[[TMP_1:.*]] = memref.alloca() : memref<2xi8> | // CHECK: %[[TMP_1:.*]] = memref.alloca() : memref<2xi8> | ||||
// CHECK: %[[TMP_2:.*]] = memref.cast %[[TMP_1]] : memref<2xi8> to memref<?xi8> | // CHECK: %[[TMP_2:.*]] = memref.cast %[[TMP_1]] : memref<2xi8> to memref<?xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_1]][%[[TMP_c0]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_1]][%[[TMP_c0]]] : memref<2xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_1]][%[[TMP_c1]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_1]][%[[TMP_c1]]] : memref<2xi8> | ||||
// CHECK: %[[TMP_3:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_3:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_4:.*]] = memref.cast %[[TMP_3]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_4:.*]] = memref.cast %[[TMP_3]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c4]], %[[TMP_3]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c4]], %[[TMP_3]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c3]], %[[TMP_3]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c3]], %[[TMP_3]][%[[TMP_c1]]] : memref<2xindex> | ||||
// CHECK: %[[TMP_5:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_5:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_6:.*]] = memref.cast %[[TMP_5]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_6:.*]] = memref.cast %[[TMP_5]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c0]], %[[TMP_5]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c0]], %[[TMP_5]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c1]], %[[TMP_5]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c1]], %[[TMP_5]][%[[TMP_c1]]] : memref<2xindex> | ||||
Show All 24 Lines | |||||
// CHECK-LABEL: func.func @concat_mix_dense_perm_dim1_dyn( | // CHECK-LABEL: func.func @concat_mix_dense_perm_dim1_dyn( | ||||
// CHECK-SAME: %[[TMP_arg0:.*]]: tensor<3x2xf64>, | // CHECK-SAME: %[[TMP_arg0:.*]]: tensor<3x2xf64>, | ||||
// CHECK-SAME: %[[TMP_arg1:.*]]: !llvm.ptr<i8>) | // CHECK-SAME: %[[TMP_arg1:.*]]: !llvm.ptr<i8>) | ||||
// CHECK-DAG: %[[TMP_c2:.*]] = arith.constant 2 : index | // CHECK-DAG: %[[TMP_c2:.*]] = arith.constant 2 : index | ||||
// CHECK-DAG: %[[TMP_c6_i32:.*]] = arith.constant 6 : i32 | // CHECK-DAG: %[[TMP_c6_i32:.*]] = arith.constant 6 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | // CHECK-DAG: %[[TMP_c1_i32:.*]] = arith.constant 1 : i32 | ||||
// CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | // CHECK-DAG: %[[TMP_c0_i32:.*]] = arith.constant 0 : i32 | ||||
// CHECK-DAG: %[[TMP_c1_i8:.*]] = arith.constant 1 : i8 | // CHECK-DAG: %[[TMP_c8_i8:.*]] = arith.constant 8 : i8 | ||||
// CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | // CHECK-DAG: %[[TMP_cst:.*]] = arith.constant 0.000000e+00 : f64 | ||||
// CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | // CHECK-DAG: %[[TMP_c0:.*]] = arith.constant 0 : index | ||||
// CHECK-DAG: %[[TMP_c3:.*]] = arith.constant 3 : index | // CHECK-DAG: %[[TMP_c3:.*]] = arith.constant 3 : index | ||||
// CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | // CHECK-DAG: %[[TMP_c1:.*]] = arith.constant 1 : index | ||||
// CHECK: %[[TMP_0:.*]] = memref.alloc() : memref<3x5xf64> | // CHECK: %[[TMP_0:.*]] = memref.alloc() : memref<3x5xf64> | ||||
// CHECK: %[[TMP_1:.*]] = memref.cast %[[TMP_0]] : memref<3x5xf64> to memref<?x?xf64> | // CHECK: %[[TMP_1:.*]] = memref.cast %[[TMP_0]] : memref<3x5xf64> to memref<?x?xf64> | ||||
// CHECK: linalg.fill ins(%[[TMP_cst]] : f64) outs(%[[TMP_0]] : memref<3x5xf64>) | // CHECK: linalg.fill ins(%[[TMP_cst]] : f64) outs(%[[TMP_0]] : memref<3x5xf64>) | ||||
// CHECK: scf.for %[[TMP_arg2:.*]] = %[[TMP_c0]] to %[[TMP_c3]] step %[[TMP_c1]] { | // CHECK: scf.for %[[TMP_arg2:.*]] = %[[TMP_c0]] to %[[TMP_c3]] step %[[TMP_c1]] { | ||||
// CHECK: scf.for %[[TMP_arg3:.*]] = %[[TMP_c0]] to %[[TMP_c2]] step %[[TMP_c1]] { | // CHECK: scf.for %[[TMP_arg3:.*]] = %[[TMP_c0]] to %[[TMP_c2]] step %[[TMP_c1]] { | ||||
// CHECK: %[[TMP_13:.*]] = tensor.extract %[[TMP_arg0]][%[[TMP_arg2]], %[[TMP_arg3]]] : tensor<3x2xf64> | // CHECK: %[[TMP_13:.*]] = tensor.extract %[[TMP_arg0]][%[[TMP_arg2]], %[[TMP_arg3]]] : tensor<3x2xf64> | ||||
// CHECK: %[[TMP_14:.*]] = arith.cmpf une, %[[TMP_13]], %[[TMP_cst]] : f64 | // CHECK: %[[TMP_14:.*]] = arith.cmpf une, %[[TMP_13]], %[[TMP_cst]] : f64 | ||||
// CHECK: scf.if %[[TMP_14]] { | // CHECK: scf.if %[[TMP_14]] { | ||||
// CHECK: memref.store %[[TMP_13]], %[[TMP_0]][%[[TMP_arg2]], %[[TMP_arg3]]] : memref<3x5xf64> | // CHECK: memref.store %[[TMP_13]], %[[TMP_0]][%[[TMP_arg2]], %[[TMP_arg3]]] : memref<3x5xf64> | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: } | // CHECK: } | ||||
// CHECK: %[[TMP_2:.*]] = memref.alloca() : memref<2xi8> | // CHECK: %[[TMP_2:.*]] = memref.alloca() : memref<2xi8> | ||||
// CHECK: %[[TMP_3:.*]] = memref.cast %[[TMP_2]] : memref<2xi8> to memref<?xi8> | // CHECK: %[[TMP_3:.*]] = memref.cast %[[TMP_2]] : memref<2xi8> to memref<?xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_2]][%[[TMP_c0]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_2]][%[[TMP_c0]]] : memref<2xi8> | ||||
// CHECK: memref.store %[[TMP_c1_i8]], %[[TMP_2]][%[[TMP_c1]]] : memref<2xi8> | // CHECK: memref.store %[[TMP_c8_i8]], %[[TMP_2]][%[[TMP_c1]]] : memref<2xi8> | ||||
// CHECK: %[[TMP_4:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_4:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_5:.*]] = memref.cast %[[TMP_4]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_5:.*]] = memref.cast %[[TMP_4]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c3]], %[[TMP_4]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c3]], %[[TMP_4]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c3]], %[[TMP_4]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c3]], %[[TMP_4]][%[[TMP_c1]]] : memref<2xindex> | ||||
// CHECK: %[[TMP_6:.*]] = memref.alloca() : memref<2xindex> | // CHECK: %[[TMP_6:.*]] = memref.alloca() : memref<2xindex> | ||||
// CHECK: %[[TMP_7:.*]] = memref.cast %[[TMP_6]] : memref<2xindex> to memref<?xindex> | // CHECK: %[[TMP_7:.*]] = memref.cast %[[TMP_6]] : memref<2xindex> to memref<?xindex> | ||||
// CHECK: memref.store %[[TMP_c0]], %[[TMP_6]][%[[TMP_c0]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c0]], %[[TMP_6]][%[[TMP_c0]]] : memref<2xindex> | ||||
// CHECK: memref.store %[[TMP_c1]], %[[TMP_6]][%[[TMP_c1]]] : memref<2xindex> | // CHECK: memref.store %[[TMP_c1]], %[[TMP_6]][%[[TMP_c1]]] : memref<2xindex> | ||||
Show All 25 Lines |