// RUN: mlir-opt %s -std-bufferize | FileCheck %s // CHECK-LABEL: func @select( // CHECK-SAME: %[[PRED:.*]]: i1, // CHECK-SAME: %[[TRUE_VAL:.*]]: tensor, // CHECK-SAME: %[[FALSE_VAL:.*]]: tensor) -> tensor { // CHECK: %[[TRUE_VAL_MEMREF:.*]] = memref.buffer_cast %[[TRUE_VAL]] : memref // CHECK: %[[FALSE_VAL_MEMREF:.*]] = memref.buffer_cast %[[FALSE_VAL]] : memref // CHECK: %[[RET_MEMREF:.*]] = select %[[PRED]], %[[TRUE_VAL_MEMREF]], %[[FALSE_VAL_MEMREF]] : memref // CHECK: %[[RET:.*]] = memref.tensor_load %[[RET_MEMREF]] : memref // CHECK: return %[[RET]] : tensor func @select(%arg0: i1, %arg1: tensor, %arg2: tensor) -> tensor { %0 = select %arg0, %arg1, %arg2 : tensor return %0 : tensor } // CHECK-LABEL: func @index_cast( // CHECK-SAME: %[[TENSOR:.*]]: tensor, %[[SCALAR:.*]]: i32 func @index_cast(%tensor: tensor, %scalar: i32) -> (tensor, index) { %index_tensor = index_cast %tensor : tensor to tensor %index_scalar = index_cast %scalar : i32 to index return %index_tensor, %index_scalar : tensor, index } // CHECK: %[[MEMREF:.*]] = memref.buffer_cast %[[TENSOR]] : memref // CHECK-NEXT: %[[INDEX_MEMREF:.*]] = index_cast %[[MEMREF]] // CHECK-SAME: memref to memref // CHECK-NEXT: %[[INDEX_TENSOR:.*]] = memref.tensor_load %[[INDEX_MEMREF]] // CHECK: return %[[INDEX_TENSOR]]