[mlir][Linalg] Employ finer-grained control of C interface emission
authorNicolas Vasilache <ntv@google.com>
Fri, 3 Apr 2020 04:08:22 +0000 (00:08 -0400)
committerNicolas Vasilache <ntv@google.com>
Fri, 3 Apr 2020 20:14:53 +0000 (16:14 -0400)
commite33a636e26349bf42557908766911654d60cb6c0
tree7b6923f3e7e62e45dccc1c8de729afaa93d64312
parent275ee5d2514bd14a7b4721b3cb0ac251a1822cb4
[mlir][Linalg] Employ finer-grained control of C interface emission

Summary:
Linalg makes it possible to interface codegen with externally precompiled HPC libraries. The mechanism to allow such interop uses a normalized ABI and the emission of C interface wrappers.

The mechanism controlling these C interface emission is too aggressive and makes it very easy to obtained undefined symbols for external function (e.g. the ones coming from libm).

This revision uses the newly introduced llvm.emit_c_interface function attribute which allows controlling this behavior at a function granularity. As a consequence LinalgToLLVM does not need to activate the C wrapper emission when adding the StdToLLVM patterns.

Differential Revision: https://reviews.llvm.org/D77364
mlir/lib/Conversion/LinalgToLLVM/LinalgToLLVM.cpp
mlir/test/mlir-cpu-runner/unranked_memref.mlir
mlir/test/mlir-cpu-runner/utils.mlir