The frontend/backend should have direct bindings to the following MLIR TOSA ops. The parser and the emitter are straightforward; the semantic analyzer, however, should be able to assert that the passed arguments are valid for the operation (for example asserting that two tensors' shapes are valid for matrix multiplication) as well as perform inference on parameterized types (for example returning tensor size information after the multiplication of two tensors). Furthermore, these types should be easily translatable to MLIR TOSA types on the backend side.
Parser:
Semantics (type inference + argument validation):
Emitter: