| // RUN: iree-compile %s --iree-hal-target-backends=vmvx | \ |
| // RUN: iree-run-module \ |
| // RUN: --device=local-sync \ |
| // RUN: --module=- \ |
| // RUN: --function=main | \ |
| // RUN: FileCheck %s |
| |
| module @example { |
| //===--------------------------------------------------------------------===// |
| // Imports |
| //===--------------------------------------------------------------------===// |
| // External function declarations for the methods implemented in the custom |
| // module C++ file. Note that they are prefixed with the `custom.` module |
| // name. |
| |
| // Creates a new string with contents from the given tensor. |
| // This is silly. Don't do this :) |
| func.func private @custom.string.from_tensor(tensor<?xi8>) -> !custom.string |
| |
| // Prints the contents of the string to stdout. |
| func.func private @custom.string.print(!custom.string) |
| |
| //===--------------------------------------------------------------------===// |
| // Sample methods |
| //===--------------------------------------------------------------------===// |
| // Note that there can be any number of publicly-exported methods; this simple |
| // sample just has one to keep things simple. |
| |
| // CHECK-LABEL: EXEC @main |
| func.func @main() { |
| // Create string from a byte buffer encoding the characters. |
| %hello_bytes = util.unfoldable_constant dense<[0, 1, 2, 3, 4]> : tensor<5xi8> |
| %hello_arg = tensor.cast %hello_bytes : tensor<5xi8> to tensor<?xi8> |
| // CHECK-NEXT: CREATE 5xi8=0 1 2 3 4 |
| %hello_str = call @custom.string.from_tensor(%hello_arg) : (tensor<?xi8>) -> !custom.string |
| |
| // Print the string to stdout. |
| // CHECK-NEXT: PRINT 5xi8=0 1 2 3 4 |
| call @custom.string.print(%hello_str) : (!custom.string) -> () |
| |
| return |
| } |
| } |