blob: c938e67a9bd6e4bb8c726b587f28cf4484ca2185 [file] [log] [blame]
// 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
}
}