// RUN: torch-mlir-opt %s -refback-munge-calling-conventions -split-input-file | FileCheck %s // CHECK-LABEL: func @f( // CHECK-SAME: %[[ARG0:.*]]: memref<*xf32>) attributes {llvm.emit_c_interface} { // CHECK: %[[VAL:.*]] = memref.cast %[[ARG0]] : memref<*xf32> to memref // CHECK: %[[RESULT:.*]] = memref.cast %[[VAL]] : memref to memref<*xf32> // CHECK: call @refbackend_consume_memref_float32_func_return(%[[RESULT]]) : (memref<*xf32>) -> () // CHECK: return func @f(%arg0: memref) -> memref { return %arg0 : memref } // ----- // CHECK-LABEL: func @i( // CHECK-SAME: %[[ARG0:.*]]: memref<*xi64>) attributes {llvm.emit_c_interface} { // CHECK: %[[VAL:.*]] = memref.cast %[[ARG0]] : memref<*xi64> to memref // CHECK: %[[RESULT:.*]] = memref.cast %[[VAL]] : memref to memref<*xi64> // CHECK: call @refbackend_consume_memref_int64_func_return(%[[RESULT]]) : (memref<*xi64>) -> () // CHECK: return func @i(%arg0: memref) -> memref { return %arg0 : memref } // ----- // CHECK-LABEL: func @elemental_type( // CHECK-SAME: %[[ARG0:.*]]: memref<*xi64>) attributes {llvm.emit_c_interface} { // CHECK: %[[VAL:.*]] = memref.cast %[[ARG0]] : memref<*xi64> to memref // CHECK: %[[RESULT:.*]] = memref.load %[[VAL]][] : memref // CHECK: call @refbackend_consume_int64_func_return(%[[RESULT]]) : (i64) -> () // CHECK: return func @elemental_type(%arg0: memref) -> i64 { %0 = memref.load %arg0[] : memref return %0 : i64 }