//===- RunnerUtils.cpp - Utils for MLIR exec on targets with a C++ runtime ===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements basic functions to debug structured MLIR types at // runtime. Entities in this file may not be compatible with targets without a // C++ runtime. These may be progressively migrated to CRunnerUtils.cpp over // time. // //===----------------------------------------------------------------------===// #include "mlir/ExecutionEngine/RunnerUtils.h" #include // NOLINTBEGIN(*-identifier-naming) extern "C" void _mlir_ciface_printMemrefShapeI8(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefShapeI32(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefShapeI64(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefShapeF32(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefShapeF64(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefShapeInd(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefShapeC32(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefShapeC64(UnrankedMemRefType *M) { std::cout << "Unranked Memref "; printMemRefMetaData(std::cout, DynamicMemRefType(*M)); std::cout << "\n"; } extern "C" void _mlir_ciface_printMemrefVector4x4xf32( StridedMemRefType, 2> *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefI8(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefI16(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefI32(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefI64(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefF16(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefBF16(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefF32(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefF64(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefInd(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefC32(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemrefC64(UnrankedMemRefType *M) { impl::printMemRef(*M); } extern "C" int64_t _mlir_ciface_nanoTime() { auto now = std::chrono::high_resolution_clock::now(); auto duration = now.time_since_epoch(); auto nanoseconds = std::chrono::duration_cast(duration); return nanoseconds.count(); } extern "C" void printMemrefI32(int64_t rank, void *ptr) { UnrankedMemRefType descriptor = {rank, ptr}; _mlir_ciface_printMemrefI32(&descriptor); } extern "C" void printMemrefI64(int64_t rank, void *ptr) { UnrankedMemRefType descriptor = {rank, ptr}; _mlir_ciface_printMemrefI64(&descriptor); } extern "C" void printMemrefF32(int64_t rank, void *ptr) { UnrankedMemRefType descriptor = {rank, ptr}; _mlir_ciface_printMemrefF32(&descriptor); } extern "C" void printMemrefF64(int64_t rank, void *ptr) { UnrankedMemRefType descriptor = {rank, ptr}; _mlir_ciface_printMemrefF64(&descriptor); } // Assume index_type is in fact uint64_t. static_assert(std::is_same::value, "Expected index_type == uint64_t"); extern "C" void printMemrefInd(int64_t rank, void *ptr) { UnrankedMemRefType descriptor = {rank, ptr}; _mlir_ciface_printMemrefInd(&descriptor); } extern "C" void printMemrefC32(int64_t rank, void *ptr) { UnrankedMemRefType descriptor = {rank, ptr}; _mlir_ciface_printMemrefC32(&descriptor); } extern "C" void printMemrefC64(int64_t rank, void *ptr) { UnrankedMemRefType descriptor = {rank, ptr}; _mlir_ciface_printMemrefC64(&descriptor); } extern "C" void _mlir_ciface_printMemref0dF32(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dF32(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref2dF32(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref3dF32(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref4dF32(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dI8(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dI32(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dI64(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dF64(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dInd(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dC32(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" void _mlir_ciface_printMemref1dC64(StridedMemRefType *M) { impl::printMemRef(*M); } extern "C" int64_t _mlir_ciface_verifyMemRefI8(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefI16(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefI32(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefI64(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefF16(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefBF16(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefF32(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefF64(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefInd(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefC32(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t _mlir_ciface_verifyMemRefC64(UnrankedMemRefType *actual, UnrankedMemRefType *expected) { return impl::verifyMemRef(*actual, *expected); } extern "C" int64_t verifyMemRefI32(int64_t rank, void *actualPtr, void *expectedPtr) { UnrankedMemRefType actualDesc = {rank, actualPtr}; UnrankedMemRefType expectedDesc = {rank, expectedPtr}; return _mlir_ciface_verifyMemRefI32(&actualDesc, &expectedDesc); } extern "C" int64_t verifyMemRefF32(int64_t rank, void *actualPtr, void *expectedPtr) { UnrankedMemRefType actualDesc = {rank, actualPtr}; UnrankedMemRefType expectedDesc = {rank, expectedPtr}; return _mlir_ciface_verifyMemRefF32(&actualDesc, &expectedDesc); } extern "C" int64_t verifyMemRefF64(int64_t rank, void *actualPtr, void *expectedPtr) { UnrankedMemRefType actualDesc = {rank, actualPtr}; UnrankedMemRefType expectedDesc = {rank, expectedPtr}; return _mlir_ciface_verifyMemRefF64(&actualDesc, &expectedDesc); } extern "C" int64_t verifyMemRefInd(int64_t rank, void *actualPtr, void *expectedPtr) { UnrankedMemRefType actualDesc = {rank, actualPtr}; UnrankedMemRefType expectedDesc = {rank, expectedPtr}; return _mlir_ciface_verifyMemRefInd(&actualDesc, &expectedDesc); } extern "C" int64_t verifyMemRefC32(int64_t rank, void *actualPtr, void *expectedPtr) { UnrankedMemRefType actualDesc = {rank, actualPtr}; UnrankedMemRefType expectedDesc = {rank, expectedPtr}; return _mlir_ciface_verifyMemRefC32(&actualDesc, &expectedDesc); } extern "C" int64_t verifyMemRefC64(int64_t rank, void *actualPtr, void *expectedPtr) { UnrankedMemRefType actualDesc = {rank, actualPtr}; UnrankedMemRefType expectedDesc = {rank, expectedPtr}; return _mlir_ciface_verifyMemRefC64(&actualDesc, &expectedDesc); } // NOLINTEND(*-identifier-naming)