[mlir][CAPI] Add result type inference to the CAPI.
authorStella Laurenzo <stellaraccident@gmail.com>
Sat, 23 Jan 2021 02:43:50 +0000 (18:43 -0800)
committerStella Laurenzo <stellaraccident@gmail.com>
Sat, 23 Jan 2021 22:30:51 +0000 (14:30 -0800)
commit52586c46b0883600a332fd64731dc5287981f980
tree35e8fa5c58087c9c936bb7baae945adf67e168f8
parent6f2753273ee6d891cabd11626e4efbce0d901661
[mlir][CAPI] Add result type inference to the CAPI.

* Adds a flag to MlirOperationState to enable result type inference using the InferTypeOpInterface.
* I chose this level of implementation for a couple of reasons:
  a) In the creation flow is naturally where generated and custom builder code will be invoking such a thing
  b) it is a bit more efficient to share the data structure and unpacking vs having a standalone entry-point
  c) we can always decide to expose more of these interfaces with first-class APIs, but that doesn't preclude that we will always want to use this one in this way (and less API surface area for common things is better for API stability and evolution).
* I struggled to find an appropriate way to test it since we don't link the test dialect into anything CAPI accessible at present. I opted instead for one of the simplest ops I found in a regular dialect which implements the interface.
* This does not do any trait-based type selection. That will be left to generated tablegen wrappers.

Differential Revision: https://reviews.llvm.org/D95283
mlir/include/mlir-c/IR.h
mlir/lib/CAPI/IR/IR.cpp
mlir/test/CAPI/ir.c