//===----------------------------------------------------------------------===//
#include "mlir/ExecutionEngine/RunnerUtils.h"
-#include <chrono>
extern "C" void
_mlir_ciface_print_memref_shape_i8(UnrankedMemRefType<int8_t> *M) {
impl::printMemRef(*M);
}
-extern "C" int64_t _mlir_ciface_nano_time() {
- auto now = std::chrono::high_resolution_clock::now();
- auto duration = now.time_since_epoch();
- auto nanoseconds =
- std::chrono::duration_cast<std::chrono::nanoseconds>(duration);
- return nanoseconds.count();
-}
-
extern "C" void print_memref_i32(int64_t rank, void *ptr) {
UnrankedMemRefType<int32_t> descriptor = {rank, ptr};
_mlir_ciface_print_memref_i32(&descriptor);
run(testSharedLibLoad)
-
-
-# Test that nano time clock is available.
-# CHECK-LABEL: TEST: testNanoTime
-def testNanoTime():
- with Context():
- module = Module.parse("""
- module {
- func @main() attributes { llvm.emit_c_interface } {
- %now = call @nano_time() : () -> i64
- %memref = memref.alloca() : memref<1xi64>
- %c0 = arith.constant 0 : index
- memref.store %memref[%c0] : memref<1xi64>
- call @print_memref_i64(%memref) : (memref<*xi64) -> ()
- return
- }
- func private @nano_time() -> i64 attributes { llvm.emit_c_interface }
- func private @print_memref_i64(memref<*xi64>) attributes { llvm.emit_c_interface }
- }""")
-
- execution_engine = ExecutionEngine(
- lowerToLLVM(module),
- opt_level=3,
- shared_libs=[
- "../../../../lib/libmlir_runner_utils.so",
- "../../../../lib/libmlir_c_runner_utils.so"
- ])
- execution_engine.invoke("main", arg0_memref_ptr)
- # CHECK: Unranked Memref
- # CHECK: [{{.*}}]
-
-
-run(testNanoTime)