[Mlir-commits] [mlir] 9889753 - [mlir][crunner] Add support for invoking std::sort.
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Tue Dec 13 12:31:19 PST 2022
Author: bixia1
Date: 2022-12-13T12:31:14-08:00
New Revision: 9889753c6d57f97003a941ab1d54f2d18441d4ab
URL: https://github.com/llvm/llvm-project/commit/9889753c6d57f97003a941ab1d54f2d18441d4ab
DIFF: https://github.com/llvm/llvm-project/commit/9889753c6d57f97003a941ab1d54f2d18441d4ab.diff
LOG: [mlir][crunner] Add support for invoking std::sort.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D139880
Added:
Modified:
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h
mlir/lib/ExecutionEngine/CRunnerUtils.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h b/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h
index e145aaf04c22e..e7798b2136af0 100644
--- a/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h
+++ b/mlir/include/mlir/ExecutionEngine/CRunnerUtils.h
@@ -486,4 +486,13 @@ extern "C" MLIR_CRUNNERUTILS_EXPORT uint64_t rtrand(void *, uint64_t m);
// Deletes the random number generator.
extern "C" MLIR_CRUNNERUTILS_EXPORT void rtdrand(void *);
+//===----------------------------------------------------------------------===//
+// Runtime support library to allow the use of std::sort in MLIR program.
+//===----------------------------------------------------------------------===//
+extern "C" MLIR_CRUNNERUTILS_EXPORT void
+_mlir_ciface_stdSortI64(uint64_t n, StridedMemRefType<int64_t, 1> *vref);
+extern "C" MLIR_CRUNNERUTILS_EXPORT void
+_mlir_ciface_stdSortF64(uint64_t n, StridedMemRefType<double, 1> *vref);
+extern "C" MLIR_CRUNNERUTILS_EXPORT void
+_mlir_ciface_stdSortF32(uint64_t n, StridedMemRefType<float, 1> *vref);
#endif // MLIR_EXECUTIONENGINE_CRUNNERUTILS_H
diff --git a/mlir/lib/ExecutionEngine/CRunnerUtils.cpp b/mlir/lib/ExecutionEngine/CRunnerUtils.cpp
index d9486f95b627c..7f800e8ea96ff 100644
--- a/mlir/lib/ExecutionEngine/CRunnerUtils.cpp
+++ b/mlir/lib/ExecutionEngine/CRunnerUtils.cpp
@@ -26,6 +26,7 @@
#include "malloc.h"
#endif // _WIN32
+#include <algorithm>
#include <cinttypes>
#include <cstdio>
#include <cstdlib>
@@ -34,6 +35,14 @@
#ifdef MLIR_CRUNNERUTILS_DEFINE_FUNCTIONS
+namespace {
+template <typename V>
+void stdSort(uint64_t n, V *p) {
+ std::sort(p, p + n);
+}
+
+} // namespace
+
// Small runtime support "lib" for vector.print lowering.
// By providing elementary printing methods only, this
// library can remain fully unaware of low-level implementation
@@ -165,4 +174,17 @@ extern "C" void rtdrand(void *g) {
delete generator;
}
+#define IMPL_STDSORT(VNAME, V) \
+ extern "C" void _mlir_ciface_stdSort##VNAME(uint64_t n, \
+ StridedMemRefType<V, 1> *vref) { \
+ assert(vref); \
+ assert(vref->strides[0] == 1); \
+ V *values = vref->data + vref->offset; \
+ stdSort(n, values); \
+ }
+IMPL_STDSORT(I64, int64_t)
+IMPL_STDSORT(F64, double)
+IMPL_STDSORT(F32, float)
+#undef IMPL_STDSORT
+
#endif // MLIR_CRUNNERUTILS_DEFINE_FUNCTIONS
More information about the Mlir-commits
mailing list