# IREE Compiler Python Bindings

Transitional note: These bindings are not complete yet and will ultimately
replace the `pyiree.compiler` and `pyiree.tf.compiler` packages.

## Core compiler

```py
from pyiree.compiler2 import *

SIMPLE_MUL_ASM = """
func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>
      attributes { iree.module.export } {
    %0 = "mhlo.multiply"(%arg0, %arg1) {name = "mul.1"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>
    return %0 : tensor<4xf32>
}
"""

# Also see compile_file()
# There are many keyword options available.
# See pyiree.compiler2.CompilerOptions
binary = compile_str(SIMPLE_MUL_ASM, target_backends=["vulkan-spirv"])
```


## TensorFlow compiler

```py
import tensorflow as tf
from pyiree.compiler2.tf import *

class SimpleArithmeticModule(tf.Module):

  @tf.function(input_signature=[
      tf.TensorSpec([4], tf.float32),
      tf.TensorSpec([4], tf.float32)
  ])
  def simple_mul(self, a, b):
    return a * b

# Also see compile_saved_model to directly compile an on-disk saved model.
# There are many keyword options available.
# See: pyiree.compiler2.tf.ImportOptions
binary = compile_module(
    SimpleArithmeticModule(), target_backends=["vulkan-spirv"])
```
