This commit starts graduating op availability mechanisms
from the SPIR-V dialect into the core.
Op availability was designed in the beginning to be
flexible and extensible, so to support dialects with
versioning/availability requirements. It was prototyped
in the SPIR-V dialect and has been proven to work well
thus far. The prototype was written to be as detached
from SPIR-V as possible, in order to make graduation
easy.
See the RFCs for op availability:
https://groups.google.com/a/tensorflow.org/g/mlir/c/UinSwMkz5Fg/m/n6eNM0NiAwAJ
https://llvm.discourse.group/t/graduate-op-versioning-mechanism-to-opbase-td/3507
Depends on D108312
When would we have multiple? This seems like Availability is an interface and so could have been defined in interfaces instead of OpBase. Why isn't it?
Esp if you allow specifying an interfaceName that implies to me there isn't just one and it should probably not be in OpBase.