[mlir] NFC - Move Vector structure from RunnerUtils.h to CRunnerUtils.h

Summary: The Vector struct does not require a C++ runtime.

Differential Revision: https://reviews.llvm.org/D75409
This commit is contained in:
Nicolas Vasilache 2020-02-29 13:40:59 -05:00
parent 9ad1099224
commit c224b4dcf4
2 changed files with 31 additions and 13 deletions

View File

@ -36,6 +36,31 @@ template <int N> void dropFront(int64_t arr[N], int64_t *res) {
*(res + i - 1) = arr[i];
}
//===----------------------------------------------------------------------===//
// Codegen-compatible structures for Vector type.
//===----------------------------------------------------------------------===//
template <typename T, int Dim, int... Dims>
struct Vector {
Vector<T, Dims...> vector[Dim];
};
template <typename T, int Dim>
struct Vector<T, Dim> {
T vector[Dim];
};
template <int D1, typename T>
using Vector1D = Vector<T, D1>;
template <int D1, int D2, typename T>
using Vector2D = Vector<T, D1, D2>;
template <int D1, int D2, int D3, typename T>
using Vector3D = Vector<T, D1, D2, D3>;
template <int D1, int D2, int D3, int D4, typename T>
using Vector4D = Vector<T, D1, D2, D3, D4>;
//===----------------------------------------------------------------------===//
// Codegen-compatible structures for StridedMemRef type.
//===----------------------------------------------------------------------===//
/// StridedMemRef descriptor type with static rank.
template <typename T, int N> struct StridedMemRefType {
T *basePtr;
@ -72,13 +97,18 @@ template <typename T> struct StridedMemRefType<T, 0> {
int64_t offset;
};
//===----------------------------------------------------------------------===//
// Codegen-compatible structure for UnrankedMemRef type.
//===----------------------------------------------------------------------===//
// Unranked MemRef
template <typename T> struct UnrankedMemRefType {
int64_t rank;
void *descriptor;
};
// Small runtime support "lib" for vector.print lowering.
//===----------------------------------------------------------------------===//
// Small runtime support "lib" for vector.print lowering during codegen.
//===----------------------------------------------------------------------===//
extern "C" MLIR_CRUNNERUTILS_EXPORT void print_f32(float f);
extern "C" MLIR_CRUNNERUTILS_EXPORT void print_f64(double d);
extern "C" MLIR_CRUNNERUTILS_EXPORT void print_open();

View File

@ -60,18 +60,6 @@ void printUnrankedMemRefMetaData(StreamType &os, UnrankedMemRefType<T> &V) {
<< "descriptor@ = " << reinterpret_cast<void *>(V.descriptor) << "\n";
}
template <typename T, int Dim, int... Dims> struct Vector {
Vector<T, Dims...> vector[Dim];
};
template <typename T, int Dim> struct Vector<T, Dim> { T vector[Dim]; };
template <int D1, typename T> using Vector1D = Vector<T, D1>;
template <int D1, int D2, typename T> using Vector2D = Vector<T, D1, D2>;
template <int D1, int D2, int D3, typename T>
using Vector3D = Vector<T, D1, D2, D3>;
template <int D1, int D2, int D3, int D4, typename T>
using Vector4D = Vector<T, D1, D2, D3, D4>;
////////////////////////////////////////////////////////////////////////////////
// Templated instantiation follows.
////////////////////////////////////////////////////////////////////////////////