mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-12 21:28:48 +00:00
[mlir][crunner] Add support for invoking std::sort.
Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D139880
This commit is contained in:
parent
9c87746de7
commit
9889753c6d
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user